R-仅允许列中的数字和点

时间:2018-08-02 15:35:59

标签: r grep

我有一个数据行,其行像这样

201712.20_16:26:;1.665855 1.28 2.00 0>86 271 327.4

这些已记录,有时在常规数字和日期之间会有随机字母,数字或其他字符。如果一切正常,应该看起来像这样:

2017.12.20_11:19:58.132207 0.86 0.31 0.46 1.97 290.0

是否有一种方法可以删除所有未遵循所需“样式”的行?也许将列(除日期列之外)限制为0到9之间的数字和点的某种东西?并删除所有不是这样的行吗?

我尝试过这样的事情:

numbers_only <- function(x) !grepl("^0-9.", x)
numbers_only(df$column)

但这似乎不起作用,因为即使其中有一个字母或其他特定符号,我也得到TRUE。 对于日期列也是如此,只不过是数字,点,下划线和冒号。

1 个答案:

答案 0 :(得分:1)

也许是您的需要。

y <- c(
  "201712.20_16:26:;1.665855 1.28 2.00 0>86 271 327.4",
  "2017.12.20_11:19:58.132207 0.86 0.31 0.46 1.97 290.0"
)


numbers_only <- function(x) !grepl("[^[:digit:][:space:]:_.]", x)

numbers_only(y)
#[1] FALSE  TRUE