R'de faktör değişkenine göre otomatik olarak özet üret


11

Aşağıdaki gibi bir veri çerçevesi var:

   case simulation temp plank oxygen
1     1          1    8     7     11
2     2          1   16    10     15
...
17   17          2   26    12     17
18   18          2   15     8     12
19   19          2   28    11     21
20   20          2   24     6     14

Özetlerin simülasyon değişkeninin seviyelerine bölünmesini istiyorum. Örneğin, tempsimülasyon == 1 ve simülasyon == 2 için ortalama ve standart sapma için aynı şeyi istiyorum.

Şu anda oldukça korkunç olan aşağıdaki kodu kullanıyorum:

df <- read.csv("data.csv")
attach(df)

# Create subset variables
temp1 = subset(temp, simulation==1)
temp2 = subset(temp, simulation==2)

plank1 = subset(plank, simulation==1)
plank2 = subset(plank, simulation==2)

oxygen1 = subset(oxygen, simulation==1)
oxygen2 = subset(oxygen, simulation==2)

print(sd(temp1))
print(sd(temp2))
print(sd(plank1))
print(sd(plank2))

Eminim bunu R'de yapmanın otomatik bir yolu olmalı, ama bulamıyorum. Kullanmayı denedim summary(df ~ simulation), ama bu yararlı bir şey üretmiyor.

Yanıtlar:


17

by()Veya tapply()işlevlerini kontrol edin . Temel olarak,

tapply(y, g, mean)

yseviyelerinin ortalamasını verecektir g. Ortaya çıkan toplu önlemlerden bir data.frame almak istiyorsanız, kullanın aggregate().

Hmisc paketindeki summary.formula()fonksiyon sayesinde daha ayrıntılı bir çözüm elde edilebilir .


3

paketinde doBy, summaryBydenediğiniz gibi formül tabanlı bir sözdizimi olan bir işlev vardır.

Ayrıca, bu soru stackexchange üzerinde daha iyi sorulmuş olurdu düşünüyorum.


Teşekkürler. Pakete bakacağım. Bu stackexchange değil mi?
robintw

1
Ben fabians Stackoverflow anlamına geliyordu: stackoverflow.com hangi R programlama için, nasıl R soruları bir şeyler yapmak. Burası daha genel olarak istatistiklerle ilgili. Ancak ikisi çok karışabilir.
Gavin Simpson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.