根据条件过滤行

时间:2020-03-30 09:32:14

标签: r dataframe

下面是数据帧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

3 个答案:

答案 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元素上更容易转换为numericsubset

subset(df, !is.na(as.numeric(value)))

或与filter

library(dplyr)
library(stringr)
df %>%
   filter(str_detect(value, "^[0-9.]+$"))