以字母开头的子集数据

subseting data that starts with a letter

我有一个包含 45 列和 >8000 个观察值的数据集。列中的变量之一是城市名称。我想删除位于以字母 "S" 开头的城市中的所有观测值。我该怎么做?我是 R 的新手,很抱歉,如果这很简单,但我无法通过搜索找到任何信息。

awk 会更好。像

cat data | awk -F<delimiter> '{if (match($<1-indexed col num>, "^[^sS].*")) { print [=10=] }}'

您可以在 grep 中完成,但它很草率(逗号是分隔符)

cat data | grep -E '^([^,]*,){<0-indexed col num>}[^sS]'

这将 return 只有那些使用 substr()-ing 函数以大写 "S" 开头的行:

dat[ substr( dat$City, 1 ,1) == "S" , ]

还可以使用:

dat[ grepl("^S", dat$City) , ]

第二个选项是一个非常简单的正则表达式。看看 ?regex 和 ?grep.

你可以使用dplyrfilter函数,虽然我不知道它与其他方法相比有多快:

cities <- c("Some", "Random", "Cities", "Stack", "Overflow", "Bla", "Foo")
df <- data.frame(x = seq_along(cities), cities)
require(dplyr)
> df  %>% filter(!grepl("^[Ss]", cities))
  x   cities
1 2   Random
2 3   Cities
3 5 Overflow
4 6      Bla
5 7      Foo