Вектор выбора строки R из фрейма данных

#r #subset

#r #подмножество

Вопрос:

Я хочу реализовать простой вектор выбора строки, используя столбец ‘country’ в приведенном ниже фрейме данных lat_all в R.

 pop   country      lat
12.4  Afghanistan  62
24.3  Australia    12
4     New Zealand  10
100   Japan        30
12    Fiji         28
  

Используя выделение ниже, которое я могу легко изменить, например

 selection <- c("Afghanistan","Australia","Japan")
  

Я хочу, чтобы результат был:

         pop            country       lat
1      12.4        Afghanistan       62
2      24.3          Australia       12
4       100              Japan       30
  

Единственный способ, которым я могу получить то, что я хочу до сих пор, — это использовать приведенный ниже, который не использует вектор выделения

 lat_all[ lat_all[2]==("Afghanistan") | lat_all[2]==("Australia") | lat_all[2]==("Japan"), ]
  

Я не понимаю, почему что-то подобное lat_all[2]==selection не работает для меня. Вектор отбора находит только Афганистан и Японию. Значение Australia равно FALSE, и любой вывод, использующий этот вектор, пропускает Австралию.

Комментарии:

1. lat_all[ lat_all$country %in% selection, ]

2. Спасибо, я не изучил функцию %in% match. Это помогает. Не могли бы вы или кто-нибудь, пожалуйста, указать, чего мне не хватает и почему мой оригинальный lat_all[2]==выбор не работает?

3. lat_all[2]==selection сравнивает 2 вектора, чтобы увидеть, равно ли каждое значение соответствующему значению в другом векторе. Таким образом, он сравнивает элемент 1 lat_all[1] с элементом 1 selection и так далее… например: c(1,2) == c(2,1) возвращает FALSE FALSE

4. согласно комментарию @rosscova; сравнение, которое вы пробовали, — это тестирование Afghanistan == Afghanistan , затем Australia == Australia , затем New Zealand == Japan , затем, поскольку selection короче, чем lat_all , оно перерабатывается, поэтому следующее сравнение Japan == Afghanistan , затем Fiji == Australia

5. Нам нужны воспроизводимые примеры. Пожалуйста, укажите свои данные в форме, указанной в описании тега.

Ответ №1:

 use subset function

lat_all  <- subset(lat_all, country %in% selection)