1. ホーム
  2. r

[解決済み] 列の条件に基づいてデータフレーム内の行をサブセット/フィルタリングする。

2023-07-24 18:13:49

質問

データフレーム "foo" がある場合、どのように "foo" からそれらの行のみを選択することができますか。 foo$location = "there" ?

foo = data.frame(location = c("here", "there", "here", "there", "where"), x = 1:5, y = 6:10)
foo
#   location x  y
# 1     here 1  6
# 2    there 2  7
# 3     here 3  8
# 4    there 4  9
# 5    where 5 10

希望する結果、"bar"。

#   location x y
# 2    there 2 7
# 4    there 4 9

どのように解決するのですか?

ここでは2つの主なアプローチを紹介します。私は読みやすさのために、この方法を好みます。

bar <- subset(foo, location == "there")

多くの条件文を並べるには &| で複雑なサブセットを作成することができます。

2つ目は、インデックスのアプローチです。Rでは、数値またはブール値のスライスで行のインデックスを作成することができます。 foo$location == "there" のベクトルを返します。 TF の行と同じ長さの値です。 foo . このようにすることで、条件が真を返す行のみを返すことができます。

foo[foo$location == "there", ]