我想转换以下数据表
da<-data.table(Gr=c("A","B","B","B","A","B"),
mmoSze=c("SCRSCR","SCRSCR","OSNOSN","Eig.SCRSCR","Eig.SCRSCR","Eig.OSNOSN"),
SCR=c(25, 43, 61, 79, 97, 115))
进入:
da.goal<-data.table(GR=c( "A", "B"),
SCRSCR=c( 25, 43),
OSNOSN=c( 0, 61),
Eig.SCRSCR=c( 97, 79),
Eig.OSNOSN=c( 0, 115))
使用data.table
!
一种可能的不希望有的方法是分割表,然后合并它们。优雅的方法是什么?
答案 0 :(得分:2)
dcast()
是一个data.table
函数,我认为这已经足够优雅了:
dcast(da, Gr ~ mmoSze)
唯一的问题是您得到NA
而不是0
,但是您可以这样做:
res = dcast(da, Gr ~ mmoSze)
res[is.na(res)] <- 0
答案 1 :(得分:1)
您需要将长表转换为宽表:
dcast(da, Gr ~ mmoSze, fill = 0)
fill = 0
将在找不到值的位置加一个零。