如果另一列重复,则合并列的值

迈克尔·普特曼

我有一个约 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 并加入,但效果不佳。真的很感激任何帮助!

27 φ 9

假设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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL根据另一列合并列

访问SQL合并多列并汇总合并列上的另一列

来自另一列的重复值

如果另一列符合条件,则在列值重复时删除一行

基于具有重复值的另一列合并和居中单元格

熊猫:如果重复不同的给定列,如何合并列的int值?

R:根据数据框另一列中的不同信息合并列

如果另一列中的值为空,则删除重复项-Pandas

合并另一列中的重复单元格

SQL:按顺序排序-如果出现并列,则对另一列进行排序

如果另一列包含值,则过滤列值

如果另一列与值匹配,则分配列的值

合并一列中存在重复值的行

合并列中的重复值

如果在一列中重复了值,我如何将另一列中的某些值提取到新列中?

合并列中的类别并获得一列的计数

根据另一列中的重复值过滤一列中的唯一值

合并行并根据另一列保留值

熊猫:如果一列重复而另一列不同,则删除行

如果一列值 >= 另一列值的 1/3 输入文本到另一列

根据另一列重复列中的值

根据另一列的值删除重复项

根据另一列的已知值查找一列中的非重复值

根据另一列的值删除一列上的重复值

在一列中查找与另一列中不同值相对应的重复值

根据另一列中的唯一值查找一列中的重复项

如果另一列中的值在列表中,则更改一列中的值[R]

Excel:如果另一列的值不为空,则求和?

将一个SQL列合并到另一列中,并删除重复项