次のように、データフレームに自分のデータがあります。
someName someID 1 2 3
A 1 T7(P),M6(O),S6(P) T7(P),M6(O),S6(P) T7(P),M6(O),S6(P),S7(P)
B 2 S4(P) S4(P) NA
C 3 S1(P),Q9(D) S1(P),Q9(D) S16(P),Q9(D)
D 4 S5(P),C7(C),S4(P) S4(P),C7(C),S4(P) S5(P),C7(C),S14(P)
E 5 S18(P) S18(P) S18(P)
F 6 S1(P) NA S1(P)
L 8 Z1(P) NA NA
Z 9 NA NA Q100(P)
私の各行を読みdf1
、分割要素の正確な一致を見つけてそれらを数えたいと思います。次に、合計cbind
を myの新しい列に表示しますdf1
。
たとえば、 rowsomeName=A
では、列 1,2,3 の文字列をコンマで分割し、T7(P)
3 つすべてで見つかったものを探して、合計が 3 になるようにしますS6(P)
。したがって、合計は になり3+3=6
ますrow A
。(S7(P)
他の列に見つからないため無視されます)。
を持たない他のアイテムを無視したい(P)
ので、M6(O)
無視されます。
Row L
他の列と交差しないため、合計は 0 になります。
したがって、apply
関数を使用して行ごとに移動し、列を分割することができます,
次に、分割された値を交差または一致させるにはどうすればよいですか?
私dput(df1)
は:
structure(list(someName = structure(1:8, .Label = c("A", "B",
"C", "D", "E", "F", "L", "Z"), class = "factor"), someID = c(1L,
2L, 3L, 4L, 5L, 6L, 8L, 9L), `1` = c("T7(P),M6(O),S6(P)", "S4(P)",
"S1(P),Q9(D)", "S5(P),C7(C),S4(P)", "S18(P)", "S1(P)", "Z1(P)",
NA), `2` = c("T7(P),M6(O),S6(P)", "S4(P)", "S1(P),Q9(D)", "S4(P),C7(C),S4(P)",
"S18(P)", NA, NA, NA), `3` = c("T7(P),M6(O),S6(P),S7(P)", NA,
"S16(P),Q9(D)", "S5(P),C7(C),S14(P)", "S18(P)", "S1(P)", NA,
"Q100(P)")), .Names = c("someName", "someID", "1", "2", "3"), row.names = c(NA,
-8L), class = "data.frame")