11

ID 列と値用のいくつかの列を持つデータ フレームがあります。その行のIDの値が別の値のセットと一致するかどうかに基づいて、データフレームの特定の行のみを保持したいと思います(たとえば、「保持」と呼ばれます)。

簡単にするために、以下に例を示します。

df <- data.frame(ID = sample(rep(letters, each=3)), value = rnorm(n=26*3))
keep <- c("a", "d", "r", "x")

keep の ID と一致する ID のみを持つ行で構成される新しいデータ フレームを作成するにはどうすればよいですか? 関数を使用して 1 文字だけでもこれを行うことができますwhich()が、複数の文字を使用すると、警告メッセージが表示され、間違った結果が返されます。データ フレームを介して for ループを実行し、そのように推定できることはわかっていますが、これについてもっとエレガントで効率的な方法があるかどうか疑問に思っています。前もって感謝します。

4

1 に答える 1

25

試してみるdf[df$ID %in% keep, ]か、セットsubset(df, ID %in% keep)のヘルプ ページを参照してください。

編集:また、これが単一の文字の場合df[df$ID == "a", ]、使用する代わりに例えば書くことができますwhich().

于 2013-10-05T16:55:09.470 に答える