У меня есть набор данных с 45 столбцами и> 8000 наблюдений. Одна из переменных в столбцах - имя города. Я хочу удалить все наблюдения, которые расположены в городах, начинающихся с буквы «S». Как мне это сделать? Я довольно новичок в R, поэтому извините, если это просто, но я не смог найти какую-либо информацию через поиск.данные, которые начинаются с буквы
0
A
ответ
1
Это будет возвращать только те строки, начинающиеся с заглавной «S» с помощью substr()
- ING функции:
dat[ substr(dat$City, 1 ,1) == "S" , ]
Может также использоваться:
dat[ grepl("^S", dat$City) , ]
Второй вариант - очень простое регулярное выражение. Посмотрите на? Regex и? Grep.
0
awk было бы лучше для этого. Что-то вроде
cat data | awk -F<delimiter> '{if (match($<1-indexed col num>, "^[^sS].*")) { print $0 }}'
Вы можете сделать это в Grep, но получить-х неаккуратно (запятая является разделителем)
cat data | grep -E '^([^,]*,){<0-indexed col num>}[^sS]'
1
Вы можете использовать dplyr
«s filter
функция, хотя я понятия не имею, как быстро она по сравнению с другими методами:
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
Спасибо! Это было прекрасно. –