【问题标题】:R - Only allow numbers and dots in columnR - 只允许列中的数字和点
【发布时间】:2018-08-02 15:35:58
【问题描述】:

我有一个数据框,其中的线条看起来像这样

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。 日期列也是如此,只有数字、点、下划线和冒号。

【问题讨论】:

  • 看看grep("[^[:digit:][:space:]:_.]", x)是不是你想要的。

标签: r regex


【解决方案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

【讨论】:

  • 效果很好!即使使用 alnum 而不是 digit。非常感谢!
  • @BallerNacken 你说只允许数字和点,alnum 字母字符也是有效的。
  • 好的,改了。谢谢!
猜你喜欢
  • 2012-04-05
  • 2021-10-07
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 2018-10-27
  • 2014-04-11
  • 1970-01-01
  • 2012-08-04
相关资源
最近更新 更多