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)
我正在寻找的是获取多个统计信息对于一次调用中的平均值,最小值,最大值,标准,...等同一组,这可行吗?
#1 楼
我将为tapply()
投入两分钱。tapply(df$dt, df$group, summary)
您可以编写一个自定义函数,并使用要替换摘要的特定统计信息。
评论
@maximusyoda,要获取科学计数法,请使用自定义函数而不是摘要,例如:tapply(df $ dt,df $ group,function(x)format(summary(x),科学= TRUE))
– BenBarnes
2014-10-25 19:21
#2 楼
dplyr软件包可以很好地替代此问题:library(dplyr)
df %>%
group_by(group) %>%
summarize(mean = mean(dt),
sum = sum(dt))
获得第一象限和第三象限
df %>%
group_by(group) %>%
summarize(q1 = quantile(dt, 0.25),
q3 = quantile(dt, 0.75))
#3 楼
使用Hadley Wickham的purrr软件包,这非常简单。使用split
将传递的data_frame
分成几组,然后使用map
将summary
函数应用于每个组。 library(purrr)
df %>% split(.$group) %>% map(summary)
评论
df%>%group_by(group)%>%do(data.frame(summary(。)))应该在dplyr中做类似的事情
– AlexR
16年8月12日在15:12
这似乎产生与使用基数R的抽头方法相同的输出。
–dsaxton
16 Sep 16 '15:32
#4 楼
解决方法有很多,但是我偏爱describeBy
软件包中的psych
:describeBy(df$dt, df$group, mat = TRUE)
#5 楼
看一下plyr
软件包。具体来说,ddply
ddply(df, .(group), summarise, mean=mean(dt), sum=sum(dt))
#6 楼
经过5年的努力,我相信这个答案将不会引起太多关注,但是仍然要使所有选项都完整,这里是data.table
library(data.table)
setDT(df)[ , list(mean_gr = mean(dt), sum_gr = sum(dt)) , by = .(group)]
# group mean_gr sum_gr
#1: A 61 244
#2: B 66 396
#3: C 68 408
#4: D 61 488
#7 楼
除了describeBy
之外,doBy
软件包是另一个选择。它提供了SAS PROC Summary的许多功能。详细信息:http://www.statmethods.net/stats/descriptives.html
评论
将数据制成表格(没有描述性统计数据)的另一种快速方法是在descr包中使用freq函数。严格来说,这不是您要的内容,但可能仍具有启发性。详细信息:rdocumentation.org/packages/descr/functions/freq
– dwstu
2013年12月26日5:14
#8 楼
psych
软件包提供了用于分组汇总统计信息的绝佳选择:library(psych)
describeBy(dt, group="grp")
产生许多有用的统计信息,包括均值,中位数,范围,sd,se。
#9 楼
尽管其他一些方法可行,但这与您正在执行的操作非常接近,仅使用base r。如果您知道聚合命令,则可能会更直观。with( df , aggregate( dt , by=list(group) , FUN=summary) )
评论
这是一个非常基本的问题,有多个答案。您可能不熟悉RSeek(LINK)和sos库(LINK),它们都是帮助您找出问题答案的绝佳资源。利用这些资源,您将能够在几秒钟内回答您自己的问题。数据<-c(行的末尾有一个逗号。
我刚刚发现了一个很棒的R包表。您可以根据需要按任意类别对数据进行制表,并为多个变量计算多个统计信息-确实很棒!但是,等等,还有更多!该软件包具有为表格生成LaTeX代码的功能,可轻松导入到文档中。