之前我问了一个类似但不同的问题(这里)
现在我想改变这个数据集:
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
Run Code Online (Sandbox Code Playgroud)
到这一个:
a 1 2 3
1: A 0 1 0
Run Code Online (Sandbox Code Playgroud)
因此,列"b"的值应该成为每列都带有"c"列的列."a"的值可以看作是参与者(这里只是一个人("A").原始数据集继续使用B的多个值,依此类推.在"转置"之后,列"a"应该包含唯一值(例如A ,B,C等)
有什么建议?
我想我可以看到你要去哪里.
以下内容应该处理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
Run Code Online (Sandbox Code Playgroud)
在更复杂的案例中未经测试.