私は1つがどのように私は一緒に、文字列の2つの列を比較することができ
df1<- structure(list(V1 = structure(c(1L, 2L, 3L, 7L, 5L, 6L, 4L, 9L,
8L), .Label = c("A0A061ACH4;Q95Q10;Q9U1W6", "A0A061ACL3;Q965I6;O76618",
"A0A061ACR1;Q2XN02;F5GUA3;Q22498", "A0A061AJJ3;A0A061AEA8", "A0A061AL01",
"C1P641", "H2FLH3;H2FLH2;A0A061ACT3;A0A061AE24;Q23551-2;Q23551;Q23551-4;Q23551-3;Q23551-5",
"Q22501;A0A061AE05", "Q86CZ7"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA,
-9L))
をDF1され、他方は、私がによって互いのラインからこれら2を比較したい
df2 <- structure(list(V1 = structure(c(1L, 2L, 3L, 6L, 5L, 4L, 8L, 9L,
7L), .Label = c("A0A061ACH4;Q95Q10;Q9U1W6", "A0A061ACL3;Q965I6;O76618",
"A0A061ACR1;Q2XN02;F5GUA3;Q22498", "A0A061AJJ3;A0A061AEA8", "A0A061AL01",
"H2FLH3;H2FLH2;A0A061ACT3;A0A061AE24;Q23551-2;Q23551;Q23551-4;Q23551-3;Q23551-5",
"Q22501;A0A061AE05", "Q27GQ4", "Q86CZ7"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA,
-9L))
をDF2され、2人のDFを持っていますライン。の前にそしてDF1およびDF2の両方からのすべてのユニークな線で出力を行い、その後DF2とその逆
するDF1から類似している線 (一つの新たなDFでこれら二つのDFからすべての行を意味する)
df1にはないがdf2にある行は、df2については0と同じです。
期待される出力がDF1に存在しない
output<- structure(list(V1 = structure(c(1L, 2L, 3L, 4L, 8L, 6L, 7L, 5L,
10L, 11L, 9L), .Label = c("", "A0A061ACH4;Q95Q10;Q9U1W6", "A0A061ACL3;Q965I6;O76618",
"A0A061ACR1;Q2XN02;F5GUA3;Q22498", "A0A061AJJ3;A0A061AEA8", "A0A061AL01",
"C1P641", "H2FLH3;H2FLH2;A0A061ACT3;A0A061AE24;Q23551-2;Q23551;Q23551-4;Q23551-3;Q23551-5",
"Q22501;A0A061AE05", "Q27GQ4", "Q86CZ7"), class = "factor"),
V2 = structure(c(3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L,
1L), .Label = c("", "0", "df1"), class = "factor"), V3 = structure(c(3L,
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L), .Label = c("", "0",
"df2"), class = "factor")), .Names = c("V1", "V2", "V3"), class = "data.frame", row.names = c(NA,
-11L))
ここ
Q27GQ4
を下回るようにすることができますが、我々はここでC1P641
ゼロ に言及DF1には存在しなく出力のDF1の列になるよう、DF2に存在しますdf2では、出力のdf2の列にゼロがあります。
ここに1つのアプローチだ、私はRに非常に新しいですので、私は任意の助けをいただければ幸いですし、私はそれを
または 'op < - merge(data.frame(df1、V2 =" "、stringsAsFactors = FALSE)、data.frame(df2、V3 =" "、stringsAsFactors = FALSE)、すべて= TRUE)'です。次に、 'NA 'を' op [is.na(op)< - 0']に置き換えます。これで、後で '%in%'を使ってマッチする必要がなくなります。 – aichao
@aichaoはdf1とdf2とdf2の間には何個の類似点があるのかを知ることができますか? –
- df1とdf2の行数はどれくらいですか? 'sum(df1 $ V1%in%df2 $ V1)' - df2には存在しないdf1はどれくらいありますか? 'sum(!(df1 $ V1%%df2 $ V1))' - df1には存在しないdf2がいくつありますか? 'sum(!(df2 $ V1%in%df1 $ V1))' – OmaymaS