【问题标题】:How to merge rows in r based on a unique pairing of two variables?如何根据两个变量的唯一配对合并 r 中的行?
【发布时间】:2017-12-22 08:09:43
【问题描述】:

对于这个问题的标题不可靠,我深表歉意。但是我在解决 R 中的这个争论问题时遇到了麻烦。这是数据的 sn-p 的样子:

example

# A tibble: 6 x 6
# Groups:   id, rel [4]
     id        rel post_w      avg_w    b_wages   a_wages
  <int>     <date>  <lgl>      <dbl>      <dbl>     <dbl>
1  2699 2005-12-05  FALSE   904.5028   904.5028        NA
2  2739 2008-02-12  FALSE  1220.8129  1220.8129        NA
3  2739 2008-02-12   TRUE  2544.8736         NA  2544.874
4  2757 2008-02-06   TRUE  2624.3018         NA  2624.302
5  3240 2005-03-30  FALSE 18718.6454 18718.6454        NA
6  3240 2005-03-30   TRUE 15206.3203         NA 15206.320

对于我的分析,变量 id 和 rel 一起创建了一个唯一标识符。我试图让每个唯一的 id、rel 组合成为一行,其中包含 avg_w、b_wages 和 a_wages 的值。例如,在上面列出的数据中,id 2739 和 rel 2008-02-12 有两个条目,即使它们是我分析的相同观察值。在一行中,观察有 b_wages 的数据,而在另一行中,它有 a_wages 的数据。我正在尝试做的是折叠这些观察结果,使其看起来像这样

     id        rel post_w      avg_w    b_wages   a_wages
  <int>     <date>  <lgl>      <dbl>      <dbl>     <dbl>
2  2739 2008-02-12 (dropped)  (dropped)  1220.8129   2544.874

post_w 和 avg_w 列没有意义,如有必要,我可以删除它们。但我想弄清楚的是如何折叠具有相同 id 的行,rel 到一行并将 b_wages 和 a_wages 值合并在一起,替换 NA 值,如图所示。

【问题讨论】:

    标签: r join dataframe merge dplyr


    【解决方案1】:

    你可以通过idrel对你的数据框进行分组,然后取第一个非NA值进行汇总;需要注意的是,如果有多个非 NA 值,这将采用第一个并丢弃其他值:

    library(dplyr)
    example %>% 
        group_by(id, rel) %>% 
        summarise(b_wages = na.omit(b_wages)[1], 
                  a_wages = na.omit(a_wages)[1])
    
    # A tibble: 4 x 4
    # Groups:   id [?]
    #     id        rel    b_wages   a_wages
    #  <int>     <fctr>      <dbl>     <dbl>
    #1  2699 2005-12-05   904.5028        NA
    #2  2739 2008-02-12  1220.8129  2544.874
    #3  2757 2008-02-06         NA  2624.302
    #4  3240 2005-03-30 18718.6454 15206.320
    

    【讨论】:

    • 我在这里试过你的方法,效果很好!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多