使用dcast函数将长格式数据框重构为宽格式的实操问题咨询
长格式转宽格式操作指南
方法1:使用reshape2包的dcast函数
这是你提到的dcast的标准用法,操作步骤如下:
- 首先加载reshape2包:
install.packages("reshape2") # 未安装时先执行安装 library(reshape2)
- 执行转换命令:
# 假设你的原长格式数据框名为long_df wide_df <- dcast( data = long_df, formula = Patient + DOB + Gender ~ variable, value.var = "value" )
参数说明:
formula左侧写你需要保留的固定标识列,这几列的唯一组合会作为宽表的一行formula右侧写存储变量名称的列(你这里就是variable列),这一列的所有唯一值会成为宽表的新列value.var指定存储数值的列(你这里就是value列),用来填充新生成的变量列
如果需要把缺失的指标值默认填充为0而非NA,可以额外加fill = 0参数。
方法2:使用tidyverse体系的pivot_wider函数(更易读)
目前tidyr包的pivot_wider是长转宽更常用的函数,用法更直观:
- 加载tidyr包:
install.packages("tidyr") # 未安装时先执行安装 library(tidyr)
- 执行转换命令:
wide_df <- long_df %>% pivot_wider( names_from = variable, values_from = value )
该函数会自动识别不需要展开的标识列,不需要手动在公式里写全Patient、DOB、Gender三个列,逻辑更清晰。同样如果要填充缺失值,加values_fill = 0参数即可。
内容的提问来源于stack exchange,提问作者Adriana
相关产品推荐
相关产品推荐

