使用R汇总一列中的每个行类别

时间:2017-09-11 23:55:00

标签: r summary

我想知道这是否可能在R中: 我有2列。 Column A (primaryhistory2.DEPT)包含大量分类数据,column B (primaryhistry2.ACT.ENROLL)包含数字和NAslooks like this

我想获得A列中每个类别的B列摘要。 对于A列中的“NUT”,我希望看到minmaxmeanmedianNAs等。我会喜欢看每个类别的这个。就像使用summary()命令一样。

不确定这是否可行..提前谢谢大家!

@Moody_Mudskipper 结果是我正在寻找的。但是如果没有列名,就很难阅读。 enter image description here

对于基础R,它没有为NA做计数,我确实在我的文件中看到了很多NA。 enter image description here

2 个答案:

答案 0 :(得分:4)

很可能使用dplyr库:

library(dplyr)
most.of.the.answer = df %>% 
    group_by(primaryhistory2.DEPT) %>%
    summarise(min = min(primaryhistry2.ACT.ENROLL, na.rm = TRUE), max = max(primaryhistry2.ACT.ENROLL, na.rm = TRUE), mean = mean(primaryhistry2.ACT.ENROLL, na.rm = TRUE), median = median(primaryhistry2.ACT.ENROLL, na.rm = TRUE))

(假设您的数据框名为df

要计算NA&#39,请尝试dplyr filter功能:

count.NAs = df %>% filter(is.na(primaryhistry2.ACT.ENROLL)) %>%
    group_by(primaryhistory2.DEPT) %>%
    summarise(count.NA = n())

我会留给你合并这两个数据帧。

答案 1 :(得分:3)

使用基数R你可以这样做:

temp <- aggregate(primaryhistory2..ACT.ENROLL ~ primaryhistory2.DEPT,df,function(x){c(mean = mean(x,na.rm=T),median = median(x,na.rm=T),min = min(x,na.rm=T),max = max(x,na.rm=T),nas=sum(is.na(x)))})
res <- cbind(temp[1],temp[[2]]) 

如果您想使用summary

summary1 <- sapply(unique(df$primaryhistory2.DEPT),function(x) summary(subset(df,primaryhistory2.DEPT == x)$primaryhistory2..ACT.ENROLL))
colnames(summary1) <- unique(df$primaryhistory2.DEPT)