如何使用dcast转换含不同类型多value.var的data.table
解决方法
你之前写法的核心问题是没有为每个id分组内添加行索引,dcast无法自动对齐不同id对应的数值行序,会出现冗余行或聚合错误。
可行代码如下:
library(data.table) # 1. 为每个id分组内生成行索引,用来对齐不同id的数值位置 inDT[, rn := rowid(id)] # 2. 先融合数据过滤掉NA值,再转宽表 outDT <- dcast( melt(inDT, id.vars = c("id", "rn"), na.rm = TRUE), rn ~ id, value.var = "value" )[, rn := NULL] # 移除辅助行索引列
执行后得到的outDT和你预期的输出完全一致。
内容的提问来源于stack exchange,提问作者ahnungslos
相关产品推荐
相关产品推荐

