Более эффективный способ фильтрации данных в R - PullRequest
2 голосов
/ 09 апреля 2020

Есть ли аккуратный способ выбрать только определенные строки из списка.
Например, допустим, у меня есть список деревень и их населения.
деревня - население
Аа - 10
Bb - 55
Cc -33
Ca - 45
Ab -39

Я ищу аккуратный способ сохранить только те строки, которых в названии деревни нет «а» (это были бы Bb, Cc и Ab).

d #file read in with read_delim
list <- d$village #this would return the list of villages
list_result <- list() 
counter <- 1
#create a new list containing only desired villages
for (village in list){
  if (!stri_detect_fixed(village, "a")){
     list_result[counter] = village
     counter = counter +1
  }
}

data_final <- d %>% 
  filter(village %in% list_result)

У меня такое ощущение, что это код для начинающих, поэтому я хочу улучшить его и сделать его более эффективным. Есть ли способы добиться того же самого только с меньшим количеством кода?

1 Ответ

1 голос
/ 09 апреля 2020

Вместо того, чтобы делать for l oop

d[grep('a', d$village, inverse = TRUE),]

Или с filter

library(dplyr)
library(stringr)
d %>%
  filter(!str_detect(village, 'a'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...