【问题标题】:How to identify rows that are not starting with a certain pattern in R如何识别不是以 R 中特定模式开头的行
【发布时间】:2016-05-25 15:41:28
【问题描述】:

我有一个包含不同字符的列的数据表,我想检查所有行是否都以“99”、“15”、“16”或“17”开头并且有 4-5 个字符。

知道怎么做吗?我考虑过使用 grep,但它并没有真正起作用..!

谢谢

阿依达

【问题讨论】:

    标签: r regex character row


    【解决方案1】:

    假设您的数据框名为 dat 并且 x 是感兴趣的列,以下将返回以所需字符开头且包含 4 或 5 个字符的所有行:

    dat[grepl("^(15|16|17|99)", dat$x) & nchar(dat$x) %in% 4:5, ]
    

    返回不符合条件的行:

    dat[!(grepl("^(15|16|17|99)", dat$x) & nchar(dat$x) %in% 4:5), ]
    

    以下是您评论的答案:

    1) 检查所有行是否符合条件:

    all(grepl("^(15|16|17|99)", dat$x) & nchar(dat$x) %in% 4:5)
    

    2) 识别不符合条件的行:

    which(!(grepl("^(15|16|17|99)", dat$x) & nchar(dat$x) %in% 4:5))
    

    【讨论】:

    • 您好,感谢您的回答,您的代码有效,问题是我想要不符合该规则的行;如果任何行不匹配 dat[grepl("^(15|16|17|99)", dat$x) & nchar(dat$x) %in% 4:5, ] 则返回 TRUE。或者也许使用 which 语句可以返回与那行代码不匹配的行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多