У меня есть датафрейм с ~ 10 тыс. Строк. Существует около 100 строк с дублированными значениями PMID и несколькими уровнями фазовой переменной.
> head(df_pn)
# A tibble: 6 x 7
# Groups: phase [1]
PMID year month day phase date monthly
<chr> <dbl> <dbl> <dbl> <chr> <date> <date>
1 29287749 2017 12 31 Phase 1 2017-12-31 2017-12-01
2 29275332 2017 12 25 Phase 1 2017-12-25 2017-12-01
3 29127910 2017 11 12 Phase 1 2017-11-12 2017-11-01
4 29103339 2017 11 7 Phase 1 2017-11-07 2017-11-01
5 28964890 2017 10 2 Phase 1 2017-10-02 2017-10-01
6 28963724 2017 10 1 Phase 1 2017-10-01 2017-10-01
>
Вот таблица данных, отсортированная для большего смысла этого:
> df_pn %>%
+ group_by(PMID) %>%
+ filter(n()>1) %>%
+ arrange(PMID)
# A tibble: 229 x 7
# Groups: PMID [114]
PMID year month day phase date monthly
<chr> <dbl> <dbl> <dbl> <chr> <date> <date>
1 10554105 1999 12 20 Phase 1 1999-12-20 1999-12-01
2 10554105 1999 12 20 Phase 2 1999-12-20 1999-12-01
3 10555022 1999 11 11 Phase 1 1999-11-11 1999-11-01
4 10555022 1999 11 11 Phase 2 1999-11-11 1999-11-01
5 10743796 2000 4 1 Phase 1 2000-04-01 2000-04-01
6 10743796 2000 4 1 Phase 2 2000-04-01 2000-04-01
7 11315914 2001 4 24 Phase 1 2001-04-24 2001-04-01
8 11315914 2001 4 24 Phase 2 2001-04-24 2001-04-01
9 11349741 2001 5 15 Phase 1 2001-05-15 2001-05-01
10 11349741 2001 5 15 Phase 2 2001-05-15 2001-05-01
# … with 219 more rows
Я хотел бы объединить строки, имеющие одинаковый PMID, и одновременно объединить переменную фазы. Будут только уникальные значения PMID, и будет несколько новых уровней переменной фазы (вместо «Фаза 1» и «Фаза 2» будут оба из них плюс «Фаза 1 и Фаза 2.», чтобы сделать это еще более К сожалению, есть несколько PMID, у которых есть Фаза 1 / Фаза 2 / Фаза 3. Раздражающие.
Пробовали это несколькими способами, используя slice и group_by и соединение, и это просто не работает хорошо. любая помощь!