Фильтрация данных на основе другого фрейма данных на основе двух строк - PullRequest
0 голосов
/ 07 мая 2019

У меня есть два набора данных.

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

    Quarter      Date            Company   value
    2012.1       2012-12-28      x         1
    2013.1       2013-01-02      y         2
    2013.1       2013-01-03      z         3

Компании снова находятся в наборе данных за все времяи отображаются несколько раз.

Другой набор данных - это индекс, который включает идентификатор компании и квартал, в котором он существовал в индексе (компании могут быть в индексе в нескольких кварталах).

    Quarter      Date            Company   value
    2012.1       2012-12-28      x         1
    2014.1       2013-01-02      y         2
    2013.1       2013-01-03      x         3

Теперь мне нужно выбрать только те компании, которые находятся в индексе одновременно (квартал), так как у меня есть данные из первого набора данных.

В приведенном выше примере мне потребуются данные от компанииx в обоих кварталах, но компанию y нужно исключить, потому что данные доступны не в том квартале.

Я пробовал несколько функций, включая фильтр, подмножество и сопоставление, но так и не получил желаемого результата.Он всегда фильтрует либо слишком много, либо слишком мало.

data %>% filter(Company == index$Company & Quarter == index$Quarter)

или

data[Company == index$Company & Quarter = index$Quarter,]

Что-то с моими условиями кажется неправильным.Любая помощь приветствуется!

1 Ответ

2 голосов
/ 07 мая 2019

Посмотрите на dplyr мощные join функции.Здесь inner_join может помочь вам

dplyr::inner_join(df1, df2, by=c("Company", "Quarter"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...