私は顧客のデータフレーム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))