さまざまな場所からの医療調査の結果を含む大きなCSVがあります(場所はデータに存在する要因です)。一部の分析は場所に固有であり、便宜上、それらの場所からのみ行を持つサブフレームを抽出したいと思います。場所は最初のフィールドなので、CSV行を並べ替えることでできますが、他の列でこれが必要になると確信しているので、Rでそれを行う方法を学びたいと思います。
簡単に言えば、質問は次のとおりです。データフレームfooが与えられた場合、fooからの行のみを含む別のデータフレームバーを作成するにはどうすればよいですか(foo$location = 'there'
?)。
2つの主なアプローチを次に示します。私はこれを読みやすくすることを好みます:
bar <- subset(foo, location == "there")
&
および|
を使用して多くの条件をストリング化して、複雑なサブセットを作成できることに注意してください。
2つ目は、インデックス作成のアプローチです。数値スライスまたはブールスライスを使用して、Rの行にインデックスを付けることができます。 foo$location == "there"
は、T
の行と同じ長さのF
およびfoo
値のベクトルを返します。これにより、条件がtrueを返す行のみを返すことができます。
foo[foo$location == "there", ]
上記の答えを拡張するために、列名を指定するのではなく、列にインデックスを付けることもできます。列名は、何をしているのかにもよります。あなたの場所が最初のフィールドであるとすると、次のようになります。
bar <- foo[foo[ ,1] == "there", ]
これは、特定の列に対するループなど、列の値に対して操作を実行できるため便利です(行番号にインデックスを付けることでも同じことができます)。
列の範囲を指定できるため、複数の列で何らかの操作を実行する必要がある場合にも便利です。
foo[foo[ ,c(1:N)], ]
または、予想される特定の列。
foo[foo[ ,c(1,5,9)], ]