2015-02-15 4 views
0

У меня есть набор данных с 45 столбцами и> 8000 наблюдений. Одна из переменных в столбцах - имя города. Я хочу удалить все наблюдения, которые расположены в городах, начинающихся с буквы «S». Как мне это сделать? Я довольно новичок в R, поэтому извините, если это просто, но я не смог найти какую-либо информацию через поиск.данные, которые начинаются с буквы

ответ

1

Это будет возвращать только те строки, начинающиеся с заглавной «S» с помощью substr() - ING функции:

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

Может также использоваться:

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

Второй вариант - очень простое регулярное выражение. Посмотрите на? Regex и? Grep.

+0

Спасибо! Это было прекрасно. –

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