0

列を削除せずに値を削除してデータフレームをサブセット化したい。

> df <- as.data.frame(rbind(c(1,2,3,4,5,6, 1), c(4,5,6,7,3,0, 0)))
> df
  V1 V2 V3 V4 V5 V6 V7
1  1  2  3  4  5  6  1
2  4  5  6  7  3  0  0

予想どおり、サブセット化すると、より小さなデータフレームが返されます。

> df[which(df[1,] > 2)]
  V3 V4 V5 V6
1  3  4  5  6
2  6  7  3  0

サブセットに以下のデータフレームを返すにはどうすればよいですか?

   V1 V2 V3 V4 V5 V6  V7
1  NA NA  3  4  5  6  NA
2  NA NA  6  7  3  0  NA
4

1 に答える 1

4

実際にはsubsetデータフレームを作成するのではなく、特定の列を空白にするだけです。whichしたがって、コマンド内のロジックを逆にするだけです。

df[ , df[ 1 , ] <= 2]

# and set all of _those_ values to NA
df[ , df[ 1 , ] <= 2] <- NA

# look at the result
df

注:データフレームNAの最初の列にすでにsが含まれている場合、はおそらく必要なものではない<=を返します。NA使用するテストが値を返さないことを確認してくださいNA

于 2013-02-23T15:45:26.173 に答える