我有一个约 10k 行的数据框。大约有 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 并加入,但效果不佳。真的很感激任何帮助!
假设PMID
仅在变量上的情况不同phase
,您可以尝试:
library(dplyr)
df_pn %>%
group_by_at(vars(-phase)) %>%
summarise(phase = toString(phase))
# A tibble: 5 x 7
# Groups: PMID, year, month, day, date [5]
PMID year month day date monthly phase
<int> <int> <int> <int> <chr> <chr> <chr>
1 10554105 1999 12 20 1999-12-20 1999-12-01 Phase 1, Phase 2
2 10555022 1999 11 11 1999-11-11 1999-11-01 Phase 1, Phase 2
3 10743796 2000 4 1 2000-04-01 2000-04-01 Phase 1, Phase 2
4 11315914 2001 4 24 2001-04-24 2001-04-01 Phase 1, Phase 2
5 11349741 2001 5 15 2001-05-15 2001-05-01 Phase 1, Phase 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句