是否有 R 函数可以在合并这些重复行中的唯一列时折叠重复行?

is there an R function to collapse duplicated rows while combining unique columns within these duplicated rows?

我想通过唯一记录 ID 折叠重复的行,以便合并存在于这些重复行上的唯一变量。某些变量仅列在重复行的一个版本中,而其他唯一变量则存在于重复记录的不同行中。我在 R 中工作。我只想让记录存在于一行中,而不会丢失任何唯一列。一个 "sum-total" 行基本上收集了可能已填充在不同行上的每一列,因此最后一行不是重复的,并显示了可能已一起填充的每个变量...

我研究了合并和绑定,我考虑过编写一个 If 规则,但重复因记录而异(参见示例)。

record  Var1  var2  var3  var4  var5
2     1     1    NA    NA    NA
2    NA    NA     1     1     1
3     2     2    NA    NA    NA
3    NA    NA     2    NA    NA
3    NA    NA    NA     2     2
4     1     1    NA    NA    NA
5    NA    NA     1     1     1
5    NA     2    NA    NA    NA

记录 2 的期望输出示例:

record  Var1  var2  var3  var4  var5
2     1     1    1    1    1
3 .... 

以 R 为基数 aggregate:

aggregate(df[2:ncol(df)], by = df["record"], sum, na.rm = T)

#### OUTPUT ####

  record Var1 var2 var3 var4 var5
1      2    1    1    1    1    1
2      3    2    2    2    2    2
3      4    1    1    0    0    0
4      5    0    2    1    1    1

使用 dplyr:

library(dplyr)

df %>% group_by(record) %>% summarize_all(sum, na.rm = T)


#### OUTPUT ####
# A tibble: 4 x 6
  record  Var1  var2  var3  var4  var5
   <int> <int> <int> <int> <int> <int>
1      2     1     1     1     1     1
2      3     2     2     2     2     2
3      4     1     1     0     0     0
4      5     0     2     1     1     1

唯一的问题是NA变成了0。但是很容易改回来。