【问题标题】:Data cleaning using grepl for [:alpha:]:[:punct:]使用 grepl 对 [:alpha:]:[:punct:] 进行数据清理
【发布时间】:2019-04-11 03:01:53
【问题描述】:

只是使用 grepl 错误。需要在 grepl 中结合 [:alpha:]: [:punct:]: 来查找/删除带有 [:alpha:] [:punct:] 的行。提供的输入数据。需要找到 punct 和 alpha 数据来删除角色并替换为 NA 或 NaN。 R语言中如何将grepl与[:alpha:] [:punct:]结合起来?

grepl("[:alpha:]:[:punct:]:",df$Incoming.Examinations)
dput(df$Incoming.Examinations)

dput(abberville_LA$Incoming.Examinations)
c("698", "xx?*&?/..", "1934", "2294", "962", "724", "4978", 
"99999999", "4841", "Closed for Holidays", "*", "775", "634", "1276", "1320", 
"3455", "886", "1973", "2739", "311", "999999999", "939", "545", 
"3946", "2239", "1041", "411", "3258", "entered by J.f. williams", 
"1115", "*", "4729", "5008", "*", "*", "1011", "1065", "2262", 
"3459", "596", "776", "1866", "5000", "1578", "393", "*", "*", 
"875", "2772", "997", "664", "680", "4351", "1205", "732")

【问题讨论】:

  • 你需要grepl("[[:alpha:]][[:punct:]]", df$Incoming.Examinations) 请显示示例的预期输出
  • 我还需要在 grepl 中包含“假期休息”、“*”。
  • 在这种情况下,模式中的条件应更改为|
  • 它也错过了 grepl 上的“由 J.f. williams 输入”
  • 不缺v1[grepl("[[:alpha:]][[:punct:]]", v1)]# [1] "xx?*&?/.." "entered by J.f. williams"

标签: r data-cleaning grepl


【解决方案1】:

如果打算将非数字元素转换为 NA

as.numeric(v1)

将自动将所有其他元素转换为 NA。

但是如果我们需要使用grepl(),匹配一个或多个数字([0-9]+)从字符串的开头(^)到结尾($)并取反(!)

v1[!grepl("^[0-9]+$", v1)] <- NA

数据

v1 <- c("698", "xx?*&?/..", "1934", "2294", "962", "724", "4978", "99999999", 
"4841", "Closed for Holidays", "*", "775", "634", "1276", "1320", 
"3455", "886", "1973", "2739", "311", "999999999", "939", "545", 
"3946", "2239", "1041", "411", "3258", "entered by J.f. williams", 
"1115", "*", "4729", "5008", "*", "*", "1011", "1065", "2262", 
"3459", "596", "776", "1866", "5000", "1578", "393", "*", "*", 
"875", "2772", "997", "664", "680", "4351", "1205", "732")

【讨论】:

  • 完美,我忘记了用于 NA 分配的
猜你喜欢
  • 1970-01-01
  • 2021-07-01
  • 2017-10-15
  • 2018-01-13
  • 1970-01-01
  • 2020-07-10
  • 2022-10-15
  • 1970-01-01
  • 2012-11-16
相关资源
最近更新 更多