按列聚合并比较文本

时间:2017-07-03 07:42:10

标签: r data.table

我有两个数据帧:

   VESSELNO        Equip  
     12234          503
     12234          504
     12234          505
     12234          506
     12231          502
     12231          503
     12231          503  

其他数据框有以下列

    VESSELNO        Equip  
     12234          503
     12234          604
     12234          605
     12234          506
     12231          602
     12231          603
     12231          503  

我想计算两个数据帧组合的唯一设备的数量 我们可以使用data.table按VESSELNO分组并获取装备

  dt[,paste(Equip,collapse = ","), by = VESSELNO]

如何比较唯一计数?

 VESSELNO         Equip  
     12234        (503,504,505,506,604,605)  = 6
     12231        (502,503,602,603) = 4  

1 个答案:

答案 0 :(得分:4)

我们可以rbind两个数据集,按照“VESSELNO”和“VESSELNO”分组。  通过unique

获取uniqueN个元素的数量
library(data.table)
setDT(rbind(df1, df2))[, .(Count = uniqueN(Equip)), VESSELNO]
#    VESSELNO Count
#1:    12234     6
#2:    12231     4

如果我们使用aggregate,请使用匿名函数获取lengthunique元素

 aggregate(Equip ~VESSELNO, rbind(df1, df2), FUN = function(x) length(unique(x)))