【问题标题】:Merge rows in R with all but one duplicate value将 R 中的行与除一个重复值外的所有行合并
【发布时间】:2021-05-06 21:58:06
【问题描述】:

我搜索了这个问题的答案,但找不到我确定的非常简单的解决方法。

我有一个这样的数据集

df <- data.frame(ID = c(1, 1, 2),
                  year1 = c(0,  1, 1),
                  year2 = c(1,  0, 0))                 

正如您所见,ID 1 是伪重复的,因为它每年都会创建一个新行,我正在尝试将这两行合并在一起,以便每个 ID 都是这样的一行

output <- data.frame(ID = c(1, 2),
                     year1 = c(1, 1),
                     year2 = c(1, 0))  

关于如何做到这一点的任何建议?我敢肯定这很容易。

谢谢

【问题讨论】:

    标签: r merge duplicates tidyverse


    【解决方案1】:
    library(dplyr)
    
    df %>%
      dplyr::group_by(ID) %>% 
      dplyr::summarize(across(starts_with("year"), ~ cumsum(.))) %>% 
      dplyr::filter(row_number() == n())
    
         ID year1 year2
      <dbl> <dbl> <dbl>
    1     1     1     1
    2     2     1     0
    
    

    这是通过对 ID 中的列 (cumsum) 求和来实现的。 filter 获取分组变量中的最后一行。

    【讨论】:

      猜你喜欢
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多