下面是数据帧df。我们可以根据条件对其进行过滤吗?例如,如果第3列有字符,而第3列有字符,则应将其过滤掉
row col value
1 1 0 ID
2 1 1 12
3 1 2 12
4 1 3 4
5 1 4
预期产量
row col value
2 1 1 12
3 1 2 12
4 1 3 4
答案 0 :(得分:4)
我们也许可以将所有带有数字的行保留在value
列中:
df[grepl('\\d', df$value),]
输出:
row col value
2 1 1 12
3 1 2 12
4 1 3 4
答案 1 :(得分:2)
您可以使用:
subset(df, !(grepl("[A-Za-z]",value) | value == ''))
# row col value
#2 1 1 12
#3 1 2 12
#4 1 3 4
这将删除出现字符([A-Za-z]
)或空值的行。
答案 2 :(得分:0)
在非NA元素上更容易转换为numeric
和subset
subset(df, !is.na(as.numeric(value)))
或与filter
library(dplyr)
library(stringr)
df %>%
filter(str_detect(value, "^[0-9.]+$"))