通过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),但这不会产生任何有用的信息。

Answers:


17

查看by()tapply()功能。基本上,

tapply(y, g, mean)

会给你平均y水平的g。如果要从结果汇总度量中获取data.frame,请使用aggregate()

通过Hmisc软件包中的summary.formula()功能可以得到更详细的解决方案。


3

程序包doBy具有一个summaryBy函数,该函数具有基于公式的语法,例如您尝试过的语法。

另外,我认为最好在stackexchange上问这个问题。


谢谢。我来看看包装。这是stackexchange吗?
robintw

1
我认为fabians的意思是Stackoverflow:stackoverflow.com,用于R编程,我该如何在R问题中做些什么。这个地方通常是关于统计数据的。但是,两者可以融合很多。
恢复莫妮卡-辛普森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.