[英]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.