データフレームから削除したい列がいくつかあります。個別に削除するには、次のような方法があります。
df$x <- NULL
しかし、私はより少ないコマンドでこれを行うことを望んでいました。
また、このように整数のインデックスを使ってカラムをドロップできることも知っています。
df <- df[ -c(1, 3:6, 12) ]
しかし、変数の相対的な位置が変わってしまうのではないかと心配しています。
Rの強力さを考えると、各列を1つずつ落とすよりも良い方法があるのではないかと考えました。
シンプルな名前のリストを使用することができます。
DF <- data.frame(
x=1:10,
y=10:1,
z=rep(5,10),
a=11:20
)
drops <- c("x","z")
DF[ , !(names(DF) %in% drops)]
あるいは、保存するリストを作成して、名前で参照することもできます。
keeps <- c("y", "a")
DF[keeps]
EDIT :
インデックス関数の drop
引数についてまだ知らない人のために説明しますと、1つの列をデータフレームとして保持したい場合には、次のようにします。
keeps <- "y"
DF[ , keeps, drop = FALSE]
drop=TRUE(または言及しない)とすると、不要な次元が削除されるため、列
y` の値を持つベクトルが返されます。
また、subset
コマンドもあり、欲しいカラムが決まっている場合に便利です。
df <- data.frame(a = 1:10, b = 2:11, c = 3:12)
df <- subset(df, select = c(a, c))
UPDATED after comment by @hadley:a,c 列を ドロップ するには、次のようにします。
df <- subset(df, select = -c(a, c))