如果我有这样的数据框,
V1 V2 V3
1 2 abchd00ajnsf
2 3 urr0sfj0s000
3 4 00000000ab00
4 5 ajauiauiajoi
.................
我希望从数据框中删除这些行,在第三列中,字母数小于3。 例如,第三行将被删除,因为其字符串中的字符数小于3。 我怎么能在R?
答案 0 :(得分:2)
您可以使用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,]
已添加:您也可以使用正则表达式grepl
对(\\D.*){3}
执行此操作。
df[grepl("(\\D.*){3}", df[[3]]), ]
# V1 V2 V3
# 1 1 2 abchd00ajnsf
# 2 2 3 urr0sfj0s000
# 4 4 5 ajauiauiajoi