我有一个data.table,其内容如下:
betnr persnr status year
1: 50536224 60961963 normal 1997
2: 50536224 62841998 normal 1997
3: 50536224 62841998 normal 1998
4: 50536224 60961963 fire 1998
5: 50536224 62841998 fire 1999
6: 50536224 60961963 hire 1996
7: 50536224 62841998 hire 1996
8: 50536224 63000343 SHORT 1998我想通过betnr,year来聚合不同status发生的次数。我的做法如下:
aggregateNStatus <- test[, .N, by=list(betnr, year, status)]
dcast.data.table(aggregateNStatus, betnr + year ~ status)
betnr year SHORT fire hire normal
1: 50536224 1996 NA NA 2 NA
2: 50536224 1997 NA NA NA 2
3: 50536224 1998 1 1 NA 1
4: 50536224 1999 NA 1 NA NA这正是我想要的,但看起来很麻烦。考虑到data.table的惊人之处,难道没有办法一步一步地做到这一点吗?
发布于 2014-11-25 16:14:56
你不需要aggregateNStatus
dcast.data.table(test, betnr+year~status, length,
fill=NA_integer_, value.var='status')
# betnr year SHORT fire hire normal
#1: 50536224 1996 NA NA 2 NA
#2: 50536224 1997 NA NA NA 2
#3: 50536224 1998 1 1 NA 1
#4: 50536224 1999 NA 1 NA NAhttps://stackoverflow.com/questions/27131506
复制相似问题