R语言中使用dcast函数完成长表转宽表的操作求助
R语言长表转宽表实现方法
方案1:使用reshape2包的dcast函数
调用dcast不符合预期通常是未正确指定取值列,或是存在重复分组时未指定聚合函数,正确实现代码如下:
# 加载依赖包 library(reshape2) # 构造示例数据,可替换为你的真实数据表 df <- data.frame( Data = c("X", "X", "Y", "Y", "Z", "Z"), Flag = c(1, 2, 1, 2, 1, 2), Answer = c("Yes", "Yes", "Yes", "No", "Yes", "Yes") ) # 长转宽核心代码 wide_df <- dcast(df, Data ~ Flag, value.var = "Answer")
如果你的真实数据中存在同一个Data+Flag组合对应多个Answer的情况,需要补充指定聚合函数,比如取第一个有效值:
wide_df <- dcast(df, Data ~ Flag, value.var = "Answer", fun.aggregate = function(x) x[1])
方案2:使用tidyverse生态的pivot_wider函数
如果你常用tidyverse系列工具,也可以用更直观的宽表转换函数实现:
library(tidyr) wide_df <- pivot_wider(df, names_from = Flag, values_from = Answer)
两种方法输出的结果都和要求的目标格式完全一致:
| Data | 1 | 2 |
|---|---|---|
| X | Yes | Yes |
| Y | Yes | No |
| Z | Yes | Yes |
内容的提问来源于stack exchange,提问作者Sriram Ananthakrishna
相关产品推荐
相关产品推荐

