0

と の 2 つの列があるx = c("a", "c", "g")としy = c("a", "b", "c", "d", "e", "f", "g")ます。

x はデータフレーム 1 の列であり、y はデータフレーム 2 の列です。データフレーム 1 は必ずしもデータフレーム 2 の次元と一致するとは限りません。

x を含む y の行を返したい。たとえば、1、3、7 を取得したいと思います。

私は何か不器用なことを試しましitems = which(dataframe1$x == dataframe2$y)たが、明らかにそれはうまくいきません。ループスルーdataframe1$xして に一致させることができることはわかっていますdataframe2$yが、もっと良い解決策があるはずです。

4

1 に答える 1

1

あなたは適切なツールを持っていました。あなたはそれを正しく使用していませんでした。==単一の値に一致します。あるベクトルを別のベクトルと一致させたい場合は、matchまたはwhichを使用します%in%( は使用しませ==)。

例:

df1 <- data.frame(x = c("a", "c", "g"))
df2 <- data.frame(y = letters[1:7])
match(df1$x, df2$y)
# [1] 1 3 7
which(df2$y %in% df1$x)
# [1] 1 3 7
于 2013-03-23T18:20:56.440 に答える