根据其他列中的值计算列中唯一实例的数量

时间:2018-01-30 03:04:05

标签: r count distinct apply

我有下表(称为火车)(实际上更大)

 UNSPSC adaptor alert bact blood collection packet patient ultrasoft whit
 514415       0     0    0     0          0      0       0         1    0
 514415       0     0    0     1          0      0       0         1    0
 514415       0     0    1     0          0      0       0         1    0
 514415       0     0    0     0          0      0       0         1    0
 514415       0     0    0     0          0      0       0         1    0
 514415       0     0    0     0          0      0       0         1    0
 422018       0     0    0     0          0      0       0         1    0
 422018       0     0    0     0          0      0       0         1    0
 422018       0     0    0     1          0      0       0         1    0
 411011       0     0    0     0          0      0       0         1    0

我想计算每列唯一UNSPSC的数量,其中值等于1.因此对于柱血,它将为2,对于列ultrasoft,将为3。

我这样做但不知道如何继续:

apply(train[,-1], 2, ......)

我正试图不使用循环。

2 个答案:

答案 0 :(得分:4)

要从您离开的地方继续,我们可以将applymargin=2一起使用,并计算length的{​​{1}}值" UNSPSC"对于每一列。

unique

更好的选择是使用apply(train[-1], 2, function(x) length(unique(train$UNSPSC[x==1]))) #adaptor alert bact blood collection packet # 0 0 1 2 0 0 #patient ultrasoft whit # 0 3 0 / sapply,它会产生相同的结果,但与lapply不同,它不会将数据帧转换为矩阵。

apply

答案 1 :(得分:-1)

如果您的列只有0和1,就像在示例中一样,只需使用colSums:

colSums(train [, - 1])#在使用前删除非数字列,如UNSPSC

# adaptor      alert       bact      blood collection     packet    patient 
#         0          0          1          2          0          0          0 
# ultrasoft       whit
#        10          0
相关问题