【发布时间】: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
如果我有这样的数据框,
V1 V2 V3
1 2 abchd00ajnsf
2 3 urr0sfj0s000
3 4 00000000ab00
4 5 ajauiauiajoi
.................
我希望从数据框中删除那些在第三列中字母数小于 3 的行。 例如,第三行将被删除,因为其字符串中的字符数小于 3。 我怎样才能在 R 中做到这一点?
【问题讨论】:
标签: r
你可以用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
【讨论】: