【问题标题】:In R, how do I delete rows in a data frame by column names of another data frame?在 R 中,如何通过另一个数据框的列名删除数据框中的行?
【发布时间】:2016-06-08 20:48:19
【问题描述】:

我有一个数据框 (df1),其中包含 200 多列数据(每列数千行)。列名由字母数字组成,并且彼此不同。

我有第二个数据集 (df2),其中有几列,其中第一列(名为“col1”)包含带有“值”的行,其中包含 df1 的列名。

但不是 df2 中的每一行我在 df1 中都有对应的列。

现在我想删除(删除)df2 中 df1 中没有“对应”列的所有行。

我使用诸如“从另一个 data.frame 中的值子集 data.frame”之类的关键字搜索了很长时间,但没有找到任何解决方案。我检查了,例如hereherehere等一些地方。

感谢您的帮助。

【问题讨论】:

  • 你能创建一个可重现的小例子吗? See tips here - 使用内置数据,或模拟数据,或使用dput() 重复分享。
  • 但也许你想要的是df2[df2$col1 %in% names(df1), ]df1 是一个数据框似乎并不重要,唯一重要的是您有一个要保留的值的字符向量,而这恰好是 names(df1)
  • 感谢@Gregor 和 Effel。你成功了!

标签: r dataframe subset


【解决方案1】:

数据:

df1 <- data.frame(a = 1:3, b = 1:3)
#   a b
# 1 1 1
# 2 2 2
# 3 3 3

df2 <- data.frame(col1 = c("a", "c"))
#   col1
# 1    a
# 2    c

保留df2 中的行,其值为df1 中的名称:

subset(df2, col1 %in% names(df1))
#   col1
# 1    a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2018-01-19
    • 2018-06-22
    相关资源
    最近更新 更多