Я понимаю, что вы хотите отфильтровать набор данных MEI_INDICATORS
, который вы подготовили, чтобы включить только те SUBJECT
индикаторы, которые доступны для всей России, Бразилии и Мексики, не так ли?
// ОБНОВЛЕНИЕ: как указано в комментариях ниже, OP ищет кортежи SUBJECT
и MEASURE
, которые появляются во всех трех наборах, а не только SUBJECT
. Изменен ответ, чтобы отразить это.
Попробуйте следующее:
library(dplyr)
[...]
MEI.AVAILABLE.4ALL <- MEI_INDICATORS %>%
group_by(SUBJECT, MEASURE) %>%
filter(
any(LOCATION == "BRA"),
any(LOCATION == "MEX"),
any(LOCATION == "RUS")
) %>%
ungroup() %>%
select(LOCATION, SUBJECT, MEASURE) %>%
arrange(SUBJECT)
В качестве альтернативы, если вы хотите подготовить список субъектов, которые появляются в трех отдельных локальных наборах данных, вы можете использовать intersect
(хотя вам придется вложить его), например:
library(dplyr)
[...]
common_subjectXmeasure <- MEI_INDICATORS_BRA %>%
select(SUBJECT, MEASURE) %>%
intersect( MEI_INDICATORS_MEX %>% select(SUBJECT, MEASURE) ) %>%
intersect( MEI_INDICATORS_RUS %>% select(SUBJECT, MEASURE) ) %>%
distinct()
MEI.AVAILABLE.4ALL <- common_subjectXmeasure %>%
left_join(MEI_INDICATORS, by = c('SUBJECT', 'MEASURE')) %>%
select(LOCATION, SUBJECT, MEASURE) %>%
arrange(SUBJECT)