有一个R函数来折叠重复的行,同时在这些重复的行中合并唯一列吗?

时间:2019-05-21 17:02:52

标签: r data-management

我想按唯一记录ID折叠重复的行,以便合并存在于这些重复的行上的唯一变量。某些变量仅在重复行的一个版本上列出,而其他唯一变量在重复记录的不同行上存在。我正在R中工作。我想只在一行上存在记录,而不会丢失任何唯一列。基本上是一个“总和”行,它收集了可能已填充到不同行上的每一列,因此最后一行不是重复的,并显示了可能已经填充在一起的每个变量...

我研究了合并和绑定,并且考虑过编写If规则,但是复制方式因记录而异(请参见示例)。

git rm

所需的记录2的输出示例:

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

1 个答案:

答案 0 :(得分:0)

以基数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。但是很容易将它们改回来。