如何使用R对数据进行分组并进行统计

时间:2014-08-11 12:54:52

标签: r

我想在我拥有的数据集上使用R进行一些统计。数据在列表中,并使用识别代码进行分组,此处在cat列

中给出
cat         AS_Year AS_Day  As_Month    EVENT_TYPE  RESULT_TYPE REASON_TYPE OPERATOR_TYPE   DATE_EVENT  Day_Total
9002F100AS2 2009    14       2          9002        F           100         AS2             14-Feb-09   2
9002F123AS2 2009    14       2          9002        F           123         AS2             14-Feb-09   1
9008F0AS2   2009    14       2          9008        F           0           AS2             14-Feb-09   1

每天都有成千上万的这些代码,我想对每个代码进行一些统计。

我已经调查了一些事情,并尝试过玩

ddply(dtest,~group,summarise,mean=mean(Day_Total),sd=sd(Day_Total))

这给了我NA的平均值和s.d.这与我使用excel得到的结果并不相关。我还在一个更简单,更小的测试数据集和手段和s.d.上测试了这个。似乎没有问题。有没有人对如何使用这个有任何建议,或者我在某个地方遗漏了什么

2 个答案:

答案 0 :(得分:2)

尝试非常有效的data.table

library(data.table) 
setDT(dtest)[, list(mean = mean(Day_Total, na.rm = T), 
                    sd=sd(Day_Total, na.rm = T)), by = cat]

或者如果您更愿意坚持使用plyr系列,请尝试使用更新且更高效的dplyr套餐

注意:首先通过plyr

分离detach("package:plyr", unload = TRUE)
library(dplyr)
dtest %>% 
  group_by(cat) %>%
  summarise(mean = mean(Day_Total, na.rm = T), sd=sd(Day_Total, na.rm = T))

答案 1 :(得分:0)

我认为小组中的猫意味着你的oneliner。 可能是你的Day_Total或cat不是正确的类型吗? 是否可以在Day_Total列中存在一些不适用的值?

是什么给出了?

ddply(dtest,.(as.factor(cat)), summarise, mean=mean(Day_Total,na.rm=true),sd=sd(Day_Total,na.rm=true))