在R中如何以单列唯一值为新列标题重组data.table
长表转宽表实现方案(适配data.table结构)
你需要的是典型的长表转宽表操作,直接使用data.table自带的dcast函数即可实现,逻辑通用不需要硬编码name列的具体取值,可适配name取值不同的所有场景。
操作步骤
- 加载data.table包(已加载可跳过)
library(data.table)
- 执行转换代码,将示例中的
dt替换为你自己的data.table变量名即可
wide_dt <- dcast( data = dt, formula = file + date ~ name, value.var = "rt", # 处理同一file+date+name组合下存在多条rt的场景 fun.aggregate = list )
参数说明
formula = file + date ~ name:等号左侧为保留的行维度字段,确保每个file对应唯一一行,date跟随file同步保留;等号右侧为要展开为新列的字段,自动取所有唯一值作为新列名value.var = "rt":指定新列的填充值来源为原rt列fun.aggregate = list:同一分组下有多条rt时,将所有值以列表形式存入对应单元格;如果需要合并多条记录,可替换为对应的聚合函数,例如取均值mean、求和sum,需要忽略空值可追加na.rm = TRUE参数
转换完成后输出的列顺序默认为file、date、所有name唯一值列,完全符合输出要求。
内容的提问来源于stack exchange,提问作者Phenomniverse
相关产品推荐
相关产品推荐

