Заменить данные фильтрованным подмножеством кадра данных в R - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть фрейм данных, такой как

Item Date Quantity
I1   Jun  1202
I1   Jul  1290
I1   Aug  1829
I1   Sep  1710
I2   Jun  892
I2   Jul  910
I2   Aug  791

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

Item Date Quantity
I1   Jun  1202
I1   Jul  1300
I1   Aug  1900

Я хочузаменить строки в обновленном подмножестве (fpItem) на исходный кадр данных fp, например

Item Date Quantity
I1   Jun  1202
I1   Jul  1300
I1   Aug  1900
I2   Jun  892
I2   Jul  910
I2   Aug  791

Есть предложения для того же?

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете сделать:

library(dplyr)

df %>%
  left_join(df_subset, by = c("Item", "Date")) %>%
  group_by(Item) %>%
  filter(!(is.na(Quantity.y) & any(!is.na(Quantity.y)))) %>%
  mutate(Quantity = coalesce(Quantity.y, Quantity.x)) %>%
  select(-matches("\\.x|\\.y"))

Вывод:

# A tibble: 6 x 3
# Groups:   Item [2]
  Item  Date  Quantity
  <chr> <chr>    <int>
1 I1    Jun       1202
2 I1    Jul       1300
3 I1    Aug       1900
4 I2    Jun        892
5 I2    Jul        910
6 I2    Aug        791
...