使用 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",我想查看 min
、max
、mean
、median
、NAs
等。我想在每个类别中都看到这个。就像你使用 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,请尝试 dplyr
的 filter
功能:
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)
我想知道这在 R 中是否可行:
我有 2 列。 Column A (primaryhistory2.DEPT)
有一堆分类数据,column B (primaryhistry2.ACT.ENROLL)
有数字和 NAs
。
我想获得 A 列中每个类别的 B 列摘要。
例如,对于 A 列中的 "NUT",我想查看 min
、max
、mean
、median
、NAs
等。我想在每个类别中都看到这个。就像你使用 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,请尝试 dplyr
的 filter
功能:
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)