R语言如何重塑count计数变量将数据转换为目标宽表格式
R长表转宽表实现方案
你要做的是典型的长格式数据透视宽格式操作,以下是可直接运行的实现代码:
方案1:tidyverse生态(推荐,代码简洁易读)
使用tidyr包的pivot_wider函数,直接指定填充规则即可,不需要额外处理缺失值:
# 加载包 library(tidyr) # 读入原始数据 raw_df <- structure(list(ID = 1:4, concept = c("a", "b", "c", "d"), count = c(1L, 2L, 4L, 6L)), class = "data.frame", row.names = c(NA, -4L)) # 执行转换 wide_df <- pivot_wider( raw_df, id_cols = ID, names_from = concept, values_from = count, values_fill = 0 )
运行后输出的wide_df和你给出的目标格式完全一致。
方案2:基础R实现,无需安装第三方包
如果不想依赖外部包,可以用内置的reshape函数完成转换,后续简单处理列名和缺失值即可:
# 读入原始数据 raw_df <- structure(list(ID = 1:4, concept = c("a", "b", "c", "d"), count = c(1L, 2L, 4L, 6L)), class = "data.frame", row.names = c(NA, -4L)) # 维度转换 wide_df <- reshape( raw_df, idvar = "ID", timevar = "concept", v.names = "count", direction = "wide" ) # 清理列名,移除自动生成的"count."前缀 colnames(wide_df) <- sub("count\\.", "", colnames(wide_df)) # 无匹配位置填充0 wide_df[is.na(wide_df)] <- 0
内容的提问来源于stack exchange,提问作者Ali Roghani
相关产品推荐
相关产品推荐

