Автоматически создавать сводку по факторной переменной в R

11

У меня есть датафрейм, подобный следующему:

   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

Я хотел бы получить резюме по уровням переменной симуляции. Например, я хотел бы получить среднее значение tempдля симуляции == 1 и симуляции == 2, и то же самое для стандартного отклонения.

На данный момент я использую следующий код, который довольно ужасен:

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

Я уверен, что должен быть автоматический способ сделать это в R, но я не могу его найти. Я пытался использовать summary(df ~ simulation), но это не дает ничего полезного.

robintw
источник

Ответы:

17

Проверьте by()или tapply()функции. В принципе,

tapply(y, g, mean)

даст вам среднее yпо уровням g. Если вы хотите получить data.frame из полученных агрегированных мер, используйте aggregate().

Более подробное решение доступно через summary.formula()функцию в пакете Hmisc .

хл
источник
3

В пакете doByесть summaryByфункция с синтаксисом на основе формул, подобным тому, который вы пробовали.

Кроме того, я думаю, что этот вопрос лучше было бы задать на stackexchange.

фабианцы
источник
Спасибо. Я посмотрю на пакет. Это стек-обмен, не так ли?
robintw
1
Я думаю, что fabians имел в виду Stackoverflow: stackoverflow.com, который предназначен для R-программирования, как мне сделать что-то в R-вопросах. Это место в целом о статистике. Однако, эти два могут смешаться много.
Восстановить Монику - Г. Симпсон