通过转换独特的RHS将dcast从长到宽
假设我有一张如下所示的桌子:通过转换独特的RHS将dcast从长到宽,r,data.table,R,Data.table,假设我有一张如下所示的桌子: DT <- data.table(ID1= rep(c("a","b","c"),3),ID2=rnorm(9,4),var = 1:9) ## > DT ## ID1 ID2 var ## 1: a 2.630392 1 ## 2: b 3.966620 2 ## 3: c 4.002776 3 ## 4: a 3.188372 4 ## 5: b 4.735084 5 ## 6: c 4.
DT <- data.table(ID1= rep(c("a","b","c"),3),ID2=rnorm(9,4),var = 1:9)
## > DT
## ID1 ID2 var
## 1: a 2.630392 1
## 2: b 3.966620 2
## 3: c 4.002776 3
## 4: a 3.188372 4
## 5: b 4.735084 5
## 6: c 4.307198 6
## 7: a 2.830868 7
## 8: b 4.892684 8
## 9: c 3.429826 9
期望输出:
dcast(DT,ID1~ID2)
## ID1 1 2 3
## 1: a 1 4 7
## 2: b 2 5 8
## 3: c 3 6 9
试一试
我在想这样的事情。但是不知道
.N
。我在医生那里没看见。thanks@DJJ其想法是创建一个序列列。另一个选项是库(splitstackshape);dcast.data.table(getanID(DT,'ID1'),ID1~.id,value.var='var')
我倾向于选择data.table选项,但第二个选项在其他情况下也很方便。非常感谢你。@DJJ没问题。很乐意帮忙you@DJJ,getanID
本质上与“data.table选项”相同:-)
dcast.data.table(DT[,N:=1:.N ,ID1], ID1~N, value.var='var')
# ID1 1 2 3
#1: a 1 4 7
#2: b 2 5 8
#3: c 3 6 9