3

次のように、データフレームに自分のデータがあります。

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")
4

2 に答える 2