データフレームから特定の列を抽出する 質問する

データフレームから特定の列を抽出する 質問する

6 列の R データ フレームがあり、そのうち 3 列のみを持つ新しいデータ フレームを作成したいと考えています。

データ フレームが であり、列、、dfを抽出したい場合、考えられる唯一のコマンドは次のようになります。ABE

data.frame(df$A,df$B,df$E)

これをもっとコンパクトに行う方法はありますか?

ベストアンサー1

列名のベクトルを使用してサブセット化できます。特に関数、パッケージ、またはアプリケーションでプログラミングする場合は、列名をオブジェクト名 (例 ) のように扱う方法よりも、この方法を強くお勧めしますsubset()

# data for reproducible example
# (and to avoid confusion from trying to subset `stats::df`)
df <- setNames(data.frame(as.list(1:5)), LETTERS[1:5])
# subset
df[c("A","B","E")]

カンマがないことに注意してください (つまり、 ではありませんdf[,c("A","B","C")])。これは、df[,"A"]がデータ フレームではなくベクトルを返すためです。ただし、df["A"]は常にデータ フレームを返します。

str(df["A"])
## 'data.frame':    1 obs. of  1 variable:
## $ A: int 1
str(df[,"A"])  # vector
##  int 1

感謝デビッド・ドーチースdf[,"A"]data.frameではなくvectorを返すことを指摘し、アントワーヌ・ファブリ私の当初の解決策 (下記) よりも優れた代替案 (上記) を提案していただき、ありがとうございます。

# subset (original solution--not recommended)
df[,c("A","B","E")]  # returns a data.frame
df[,"A"]             # returns a vector

おすすめ記事