微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修改/删除不符合列的正则表达式模式的 R 行?

如何解决如何修改/删除不符合列的正则表达式模式的 R 行?

这是我当前列的示例,以及我想要的替换。

Times <- c("12h00","16h30","Afternoon","15h00","14h20","7h30","06h00")
           
Output: ["12","16",NA,"15","14","7","6"]

我现在正在使用一个凌乱的数据集,但我只希望该列包含每次的小时数。绝大多数是“##h##”格式(07h30)。

我认为 str_replace_all(Time,pattern,replacement)在这种情况下工作,但我有疑问。我认为这 "^\\d{2}h\\d{2}$" 将是适当的代码。取消不符合列模式的数据的最简单方法是什么?

我的最终目标是为一天中的每个小时创建一个包含 24 个 bin 的直方图,每次都发生鲨鱼袭击。

你怎么看?

编辑:#h## 格式有一些,如“7h30”,但我希望用普通的“7”替换它,因为数量很少,所以不是 100% 必要的。

解决方法

你可以使用

library(stringr)
Times <- c("12h00","16h30","Afternoon","15h00","14h20","7h30","06h00")
str_extract(Times,'[1-9]\\d*(?=h)')
## => [1] "12" "16" NA   "15" "14" "7"  "6" 

模式将提取

  • [1-9] - 非零数字
  • \d* - 零个或多个数字
  • (?=h) - 紧随其后的是 h

参见 regex demoR demo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。