【问题标题】:Select rows in data frame with partial match in values of column在数据框中选择列值部分匹配的行
【发布时间】:2020-03-11 11:34:56
【问题描述】:

假设我有以下数据集

d <- data.frame(1:31, 31:1)
names(d) <- c("1st", "2nd")

并且我想选择名为“1st”的列中出现“3”的列(即应该选择第 3、13 和 31 列,而不是第 1、9 和 29 列)。

sqldf("select * from d where 1st LIKE '%3%'")

给我错误:

错误:无法识别的令牌:“1st”

如何根据部分匹配有选择地对部分数据框进行子集化?

期望的输出:

1st    2nd
3       29
13      19
31      1

非常感谢任何帮助

【问题讨论】:

    标签: r subset partial sqldf


    【解决方案1】:

    我们有非法列名,用方括号括起来:

    sqldf("select * from d where [1st] LIKE '%3%'")
    #   1st 2nd
    # 1   3  29
    # 2  13  19
    # 3  23   9
    # 4  30   2
    # 5  31   1
    

    关于非法

    我还没有找到它的参考,但是没有使用括号括起来的有效表名应该是任何不以数字开头的字母数字组合

    【讨论】:

    • 谢谢,这行得通!究竟是什么使列名非法? (即为什么我必须将它们括起来?)
    • @Icewaffle 以数字开头,更新帖子
    猜你喜欢
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    相关资源
    最近更新 更多