3

我之前问过一个类似但不同的问题(这里

现在我想改变这个数据集:

dt <- data.table(a=c("A","A","A"),b=1:3,c=c(0,1,0))
dt
   a b c
1: A 1 0
2: A 2 1
3: A 3 0

对此:

   a 1 2 3
1: A 0 1 0

因此,“b”列的值应该成为每个具有“c”列值的列。“a”的值可以看作是参与者(这里只有一个人(“A”)。原始数据集继续有多个 B 值等等。“转置”之后,“a”列应该包含唯一值(例如 A ,B,C 等)

有什么建议么?

4

1 回答 1

5

我想我可以看到你要去哪里。

以下内容也应处理 b 中不同的独特项目并将它们排列起来。

.u = unique(dt$b)                        # find first the unique columns
ans = dt[,as.list(c[match(.u,b)]),by=a]  # as.list is the way to make columns
setnames(ans,c("a",.u))                  # rename once afterwards is faster
ans
   a 1 2 3
1: A 0 1 0

在更复杂的情况下未经测试。

于 2013-09-10T12:30:15.540 回答