r - 从数据框中提取特定列

标签 r dataframe r-faq

我有一个包含 6 列的 R 数据框,我想创建一个仅包含三列的新数据框。

假设我的数据框是 df,我想提取列 ABE ,这是我能弄清楚的唯一命令:

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

有没有更紧凑的方法来做到这一点?

最佳答案

您可以使用列名称向量进行子集化。我非常喜欢这种方法,而不是那些将列名称视为对象名称的方法(例如 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
<小时/>

感谢David Dorchies指出df[,"A"]返回一个向量而不是 data.frame,并返回 Antoine Fabri为我的原始解决方案(下面)提出更好的替代方案(上面)。

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

关于r - 从数据框中提取特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10085806/

相关文章:

Python Pandas 选择引用列中字符串值的索引值

python - 优化从数据帧中提取列表以在 Python 中创建新变量

r - 计算每组的行数并将结果添加到原始数据框

r - 将数据从 R 导出到 Excel

r - 分类 - 因子水平的使用

python - 将 pd.value_counts() 和定义的变量附加到一行数据帧

r - R中的尾递归

R 舍入到最接近的 0.5 或 0.1

r - 在 dplyr::mutate 中对字符向量中列出的多个变量求和

r - dplyr:当我需要所有变量名称时如何避免硬编码变量名称?