如何用R的data.table将Type转为列、Group转为行名并填充Value值?
使用data.table实现长表转宽表
当然可以用data.table的内置函数完成这个需求,核心用dcast()函数实现长格式到宽格式的转换,具体步骤如下:
- 构造原数据(已有数据可跳过):
library(data.table) dt <- data.table( Group = c(rep(1, 5), rep(2, 5), rep(3, 5)), Type = c("A","B","C","D","E"), Value = 1:15 )
- 用
dcast()转成宽格式:
result <- dcast(dt, Group ~ Type, value.var = "Value")
这里Group ~ Type表示以Group的取值作为行分组依据,Type的取值作为新列名,value.var = "Value"指定用Value列的数值填充单元格。此时result的结构为:
Group A B C D E 1: 1 1 2 3 4 5 2: 2 6 7 8 9 10 3: 3 11 12 13 14 15
- 设置行名为
Group的取值并移除原Group列:
rownames(result) <- result$Group result[, Group := NULL]
最终得到目标格式:
A B C D E 1: 1 2 3 4 5 2: 6 7 8 9 10 3: 11 12 13 14 15
内容的提问来源于stack exchange,提问作者user321627
相关产品推荐
相关产品推荐

