我试图在R / S-PLUS中一次性按分类列分组获得多个汇总统计信息 . 我找到了几个函数,但是每个函数都会执行一次统计,比如`aggregate() .
data <- c(62, 60, 63, 59, 63, 67, 71, 64, 65, 66, 68, 66,
71, 67, 68, 68, 56, 62, 60, 61, 63, 64, 63, 59)
grp <- factor(rep(LETTERS[1:4], c(4,6,6,8)))
df <- data.frame(group=grp, dt=data)
mg <- aggregate(df$dt, by=df$group, FUN=mean)
mg <- aggregate(df$dt, by=df$group, FUN=sum)
我正在寻找的是在一次通话中获得同一组的多个统计数据,如mean,min,max,std,...等,这是可行的吗?
9 回答
我会为
tapply()
投入两美分 .您可以编写一个自定义函数,其中包含要替换摘要的特定统计信息 .
dplyr 包可能是这个问题的不错替代方案:
使用Hadley Wickham的purrr包这很简单 . 使用
split
将传递的data_frame
拆分为组,然后使用map
将summary
函数应用于每个组 .在
psych
包中's many different ways to go about this, but I' m偏向describeBy
:看一下
plyr
包 . 具体来说,ddply
除
describeBy
外,doBy
包是另一种选择 . 它提供了SAS PROC SUMMARY的大部分功能 . 详情:http://www.statmethods.net/stats/descriptives.html我刚刚发现了一个很棒的R包tables . 您可以根据需要按照多个类别对数据进行制表,并计算多个变量的多个统计数据 - 这真是太棒了!
但等等,还有更多!该软件包具有为表生成LaTeX代码的功能,以便于导入到您的文档中 .
经过5年的漫长岁月,我肯定不会对这个答案给予太多的关注,但仍然要完成所有选项,这里是
data.table
首先,它取决于您的R版本 . 如果您已通过2.11,则可以将aggreggate与多个结果函数(摘要,实例或您自己的函数)一起使用 . 如果没有,你可以使用贾斯汀的答案 .