我有一個數據框puzzle
的客戶和他們擁有的物品的類型。如果有多個項目,則客戶可以在列表中多次出現。獲取每對人的百分比
name type
m1 A
m10 A
m2 A
m9 A
m9 B
m4 B
m5 B
m1 C
m2 C
m3 C
m4 C
m5 C
m6 C
m7 C
m8 C
m1 D
m5 D
我想計算擁有「A」的人中有多少百分比,也有自己的「B」等等。
基於上述輸入,我怎麼能得到一個輸出像這樣使用R:
A B C D TOTAL
A 1 0.25 0.5 0.25 4
B 0.33 1 0.67 0.33 3
C 0.25 0.25 1 0.25 8
D 0.5 0.5 1 1 2
非常感謝您的幫助!
這裏是長和手動方式做到這一點,沒有循環或高級的功能任何(當然,其浪費R中潛在的):
示例項目A: -
puzzleA <- subset(puzzle, type == 'A')
誰擁有一種計算的客戶,誰也擁有B: -
length(unique((merge(puzzleA, puzzleB, by = 'name'))$name))/length(unique(puzzleA$name)
數據
puzzle <- structure(list(name = c("m1", "m10", "m2", "m9", "m9", "m4",
"m5", "m1", "m2", "m3", "m4", "m5", "m6", "m7", "m8", "m1", "m5"
), type = c("A", "A", "A", "A", "B", "B", "B", "C", "C", "C",
"C", "C", "C", "C", "C", "D", "D")), .Names = c("name", "type"
), class = "data.frame", row.names = c(NA, -17L))