【问题标题】:Removing strings on the basis of number of characters in R根据R中的字符数删除字符串
【发布时间】:2014-10-26 04:36:48
【问题描述】:

如果我有这样的数据框,

V1 V2 V3
1  2  abchd00ajnsf
2  3  urr0sfj0s000
3  4  00000000ab00
4  5  ajauiauiajoi
.................

我希望从数据框中删除那些在第三列中字母数小于 3 的行。 例如,第三行将被删除,因为其字符串中的字符数小于 3。 我怎样才能在 R 中做到这一点?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以用gsub去掉所有的数字,然后用nchar取字符数

    df[!nchar(gsub("[0-9]+", "", df[[3]])) < 3L,]
    #   V1 V2           V3
    # 1  1  2 abchd00ajnsf
    # 2  2  3 urr0sfj0s000
    # 4  4  5 ajauiauiajoi
    

    或者等价的

    df[nchar(gsub("[0-9]+", "", df[[3]])) > 2L,]
    

    添加:您也可以使用正则表达式(\\D.*){3} 对grepl 执行此操作。

    df[grepl("(\\D.*){3}", df[[3]]), ]
    #   V1 V2           V3
    # 1  1  2 abchd00ajnsf
    # 2  2  3 urr0sfj0s000
    # 4  4  5 ajauiauiajoi
    

    【讨论】:

    • 完美运行。非常感谢。
    猜你喜欢
    • 2016-04-08
    • 2018-02-27
    • 2018-05-30
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多