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

Summarize each category of rows in one column using R

我想知道这在 R 中是否可行: 我有 2 列。 Column A (primaryhistory2.DEPT) 有一堆分类数据,column B (primaryhistry2.ACT.ENROLL) 有数字和 NAs

我想获得 A 列中每个类别的 B 列摘要。 例如,对于 A 列中的 "NUT",我想查看 minmaxmeanmedianNAs 等。我想在每个类别中都看到这个。就像你使用 summary() 命令时一样。

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

@Moody_Mudskipper 结果就是我要找的。但是没有列名就很难阅读。

对于基础 R,它不计算 NA,我确实在我的文件中看到很多 NA。

很有可能使用 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,请尝试 dplyrfilter 功能:

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

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

使用 base 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)