簡體   English   中英

根據其他列中的值計算列中唯一實例的數量

[英]Count number of unique instances in a column depending on values in other columns

我有下表(稱為火車)(實際上更大)

 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, ......)

我試圖不使用循環。

要從您離開的地方繼續,我們可以使用margin=2 apply並計算每列的“UNSPSC”的unique值的length

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不同,不會將數據幀轉換為矩陣。

sapply(train[-1], function(x) length(unique(train$UNSPSC[x==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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM