data.table按类别索引的行数

时间:2017-09-18 12:43:24

标签: r count data.table

我遇到了一个简单的问题,但是没有在data.table手册或这里找到解决方案。

dt<-data.table(account=c("treu65","treu65","treg23","treg23","treg23"),year=c("2012","2013","2013","2013","2012"))

我需要按帐户和年份添加一个包含行数的列。问题是我需要创建两个单独的列。一个将包含2012年的计数,另一个将包含2013年的计数。 像这样:

   account year count2012 count2013
1:  treu65 2012     1          1
2:  treu65 2013     1          1
3:  treg23 2013     1          2
4:  treg23 2013     1          2
5:  treg23 2012     1          2

通常我会聚合,但在这种情况下我需要与上面相同的结构。 我得到了:

dt[year==2012,count2012:=.N,.(account)]
dt[year==2013,count2013:=.N,.(account)]

但我现在有NAs:

   account year count2012 count2013
1:  treu65 2012         1        NA
2:  treu65 2013        NA         1
3:  treg23 2013        NA         2
4:  treg23 2013        NA         2
5:  treg23 2012         1        NA

我应该得到:

   account year count2012 count2013
1:  treu65 2012         1         1
2:  treu65 2013         1         1
3:  treg23 2013         1         2
4:  treg23 2013         1         2
5:  treg23 2012         1         2

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以将过滤器从readarray -t -d '' -O "${#in[@]}" in 位置(您只能修改特定行)移至i位置并使用j计算行数:

sum