将两列数据表转换为数据表,其中一列的列号和另一列的值

时间:2016-10-26 11:25:47

标签: r data.table

以下示例中使用base或data.table函数和操作执行tdt的更优雅方式是什么?

library(data.table)
dt <- data.table(a = letters[1:5], b = 1:5)
dt
# a b
# 1: a 1
# 2: b 2
# 3: c 3
# 4: d 4
# 5: e 5
tdt <- data.table(t(matrix(dt$b, dimnames = list(dt$a, NULL))))
tdt
# a b c d e
# 1: 1 2 3 4 5

1 个答案:

答案 0 :(得分:1)

我们可以使用dcast

dcast(dt[, rn := 1], rn~a, value.var = "b")[, rn := NULL][]
#   a b c d e
#1: 1 2 3 4 5

或者

setDT(setNames(as.list(dt$b), dt$a))[]
#   a b c d e
#1: 1 2 3 4 5

或者

dt[, setNames(as.list(b),a )]