Как выбрать строки, которые равны элементу в списке в R? - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю с фреймом данных, в котором есть наблюдения из разных стран.Я только хочу выбрать страны, которые находятся в списке, который я определил.

 Country.Name     Country.Code     Indicator.Name               Indicator.Code       year     fert
1        Aruba          ABW Fertility rate, total (births per woman) SP.DYN.TFRT.IN X1960 4.820000
2  Afghanistan          AFG Fertility rate, total (births per woman) SP.DYN.TFRT.IN X1960 7.450000
3       Angola          AGO Fertility rate, total (births per woman) SP.DYN.TFRT.IN X1960 7.478000
4      Albania          ALB Fertility rate, total (births per woman) SP.DYN.TFRT.IN X1960 6.489000
5      Andorra          AND Fertility rate, total (births per woman) SP.DYN.TFRT.IN X1960       NA
6   Arab World          ARB Fertility rate, total (births per woman) SP.DYN.TFRT.IN X1960 6.948747
.....

Например, мне нужны только наблюдения, которые есть в этом списке c («Аруба», «Албания», «Германия»)

Я пробовал это, но по некоторым причинам это не так.т работы.

d_f <- read.csv('fertility_rate.csv') %>%
  gather(year, fertility, X1960:X2017)
d_fer <- d_f[d_f$Country.Name %in% selected_countries,]

Вот подробный код:

pupil_ratio <- read.csv('pupil_ratio.csv')  #this data has all the countries I want
countries <-as.vector(pupil_ratio$Country.Name) #I convert it to a vector

d_f <- read.csv('fertility_rate.csv') %>%
  gather(year, fert, X1960:X2017)
d_fer <- d_f[d_f$Country.Name %in% countries,]

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

dplyr::filter() должно работать нормально:

d_f <- read.csv('fertility_rate.csv') %>%
  gather(year, fert, X1960:X2017) %>% 
  dplyr::filter(Country.Name %in% countries) # only select countries which are in countries
0 голосов
/ 29 ноября 2018

Привет, это просто, просто сделайте индексацию, как показано ниже

d_fer <- d_f[(d_f$Country.Name %in% c('Aruba', 'Albania' 'Germany')),]

или

dataframe[c('Aruba', 'Albania' 'Germany'),]

надеюсь, что это будет работать.

...