我有这样的数据:
df <- data.frame(name = c("James", "jonathan", "Abel", "Cynthia", "Cornelius", "alex"))
name
James
jonathan
Abel
Cynthia
Cornelius
alex
字符串
我想选择name
不以“A”或“J”开头开始的行。预期结果:
name
Cynthia
Cornelius
型
我想要一个简单的dplyr
解决方案。
4条答案
按热度按时间4nkexdtk1#
一种选择是将
dplyr::filter()
与不区分大小写的stringr::str_starts()
结合使用:字符串
(?i)
告诉它对大小写不敏感,|
告诉它查找a/A
或j/J
。输出量:
型
cnwbcb6i2#
您可以将
grepl
与filter
一起使用。"^[A|J]"
匹配以A或J开头的字符串,而ignore.case = TRUE
表示小写和大写字母都匹配。由于您希望保留不以A或J开头的值,因此可以使用!
反转选择:字符串
v9tzhpje3#
在base R中,可以使用
grep
来索引(使用invert = TRUE
和ignore.case = TRUE
):字符串
gblwokeq4#
dplyr
没有任何特殊的字符串函数。您只想使用filter
测试第一个字母是否不是A或J。这里有一种方法,将name
转换为大写以进行测试,使用substr
提取第一个字符,然后测试它是否不是J或A:字符串
你可以用很多其他的方法来编写测试,比如从base使用
grepl
或startsWith
,使用stringr::str_detect
或stringi::stri_detect
等等。