R语言按type分组统计计数新增列,table()输出无color列名如何解决
问题原因
你使用table(df$color, df$type)得到的是R的列联表矩阵,color字段的取值存储在矩阵的行名中,不会作为单独的列展示,只要做简单转换即可得到预期结果。
解决方法
方法1:Base R 原生实现
# 将列联表转为数据框 count_df <- as.data.frame.matrix(table(df$color, df$type)) # 提取行名作为color列 count_df$color <- rownames(count_df) # 调整列顺序,把color列放在第一位置 count_df <- count_df[,c("color", setdiff(colnames(count_df), "color"))]
方法2:tidyverse 套件实现(适配性更强)
如果常用tidyverse生态,可以用dplyr+tidyr的组合实现,无需手动调整列,type字段的所有取值会自动生成对应列:
library(dplyr) library(tidyr) count_df <- df %>% # 按color、type分组统计数量 count(color, type) %>% # 长表转宽表,缺失的组合默认填充0 pivot_wider( names_from = type, values_from = n, values_fill = 0 )
内容的提问来源于stack exchange,提问作者Sunny Smith
相关产品推荐
相关产品推荐

