Automatycznie twórz podsumowanie według zmiennej czynnikowej w R


11

Mam ramkę danych, jak poniżej:

   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

Chciałbym uzyskać podsumowania podzielone przez poziomy zmiennej symulacyjnej. Na przykład, chciałbym średnią tempdla symulacji == 1 i symulacji == 2, i to samo dla odchylenia standardowego.

W tej chwili używam następującego kodu, co jest dość okropne:

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))

Jestem pewien, że musi istnieć automatyczny sposób na zrobienie tego w R, ale nie mogę go znaleźć. Próbowałem użyć summary(df ~ simulation), ale to nic nie daje.

Odpowiedzi:


17

Sprawdź funkcje by()lub tapply(). Gruntownie,

tapply(y, g, mean)

da ci średnią ywedług poziomów g. Jeśli chcesz uzyskać ramkę data.frame z uzyskanych zagregowanych miar, użyj aggregate().

Bardziej rozbudowane rozwiązanie jest dostępne poprzez summary.formula()funkcję w pakiecie Hmisc .


3

Pakiet doByma summaryByfunkcję, która ma składnię opartą na formule, taką jak ta, którą wypróbowałeś.

Myślę też, że lepiej byłoby zadać to pytanie na stackexchange.


Dzięki. Zajrzę do paczki. To jest wymiana stosów, prawda?
robintw

1
Myślę, że fabianie mieli na myśli Stackoverflow: stackoverflow.com, który jest przeznaczony do programowania w języku R, jak mam coś zrobić w pytaniach R. To miejsce jest bardziej ogólnie o statystykach. Oba mogą jednak mieszać się dużo.
Gavin Simpson
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.