【问题标题】:Filter all rows that start with any Latin alphabetic letter in R过滤以 R 中任何拉丁字母开头的所有行
【发布时间】:2022-01-06 13:14:19
【问题描述】:

如何过滤以 R 中任何拉丁字母开头的所有行

不工作的示例代码

library(dplyr)

df <- data.frame( marks = c(20.1, 30.2, 40.3, 50.4, 60.5),
                  
                  age = c(21:25),
                  
                  roles = c('Software Eng.', 'Software Dev', 
                            'Data Analyst', 'Data Eng.',
                            '5Sigma'))

df %>% filter(grep("[A-z]", roles))

期望的输出

  marks age         roles
1  20.1  21 Software Eng.
2  30.2  22  Software Dev
3  40.3  23  Data Analyst
4  50.4  24     Data Eng.

【问题讨论】:

  • field: 不是您数据中的子字符串。此外,filter 需要一个逻辑向量,而grep 返回索引。 df %&gt;% filter(grepl("^[A-z]+", roles))?
  • 谢谢,这也解决了我的问题,正则表达式是我最大的弱点

标签: r dplyr stringr


【解决方案1】:

首先,[A-z][A-Za-z] 不同,您需要更加小心字符类。 (请参阅 Difference between regex [A-z] and [a-zA-Z] 并忽略 部分。)

其次,field: 是从哪里来的?这样做:

df %>%
  filter(grepl("^[A-Za-z]", roles))
#   marks age         roles
# 1  20.1  21 Software Eng.
# 2  30.2  22  Software Dev
# 3  40.3  23  Data Analyst
# 4  50.4  24     Data Eng.

(加上之前关于greplgrep 的评论。)

【讨论】:

  • 谢谢,这解决了我的问题,并将深入研究这些资源。正则表达式是我最大的弱点
猜你喜欢
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2017-04-04
  • 2021-12-18
  • 2022-06-22
  • 2022-01-03
相关资源
最近更新 更多