通过两个变量折叠R中的重复行

时间:2017-03-08 00:55:49

标签: r dplyr

我的数据集中有部分重复的行。这些行匹配两个变量,然后对于其余变量,有一些NA。如果我可以将这些部分重复的行组合在一起,那么我将拥有该行的完整案例。

如何基于两个变量的相似值组合数据集中的行,从而替换每个单独行中的NA,留下一个完整的行?

a <- (c(1, 1, 1, 1))  
b <- (c(1, 1, 3, 3))  
c <- (c(NA, 0, NA, NA))  
d <- (c(0, NA, 0, NA))  

y <- data.frame(a, b, c, d)
head(y)  

a1 <- (c(1, 1))  
b1 <- (c(1, 3))  
c1 <- (c(0, NA))  
d1 <- (c(0, 0))  

z <- data.frame(a1, b1, c1, d1)
head(z)

1 个答案:

答案 0 :(得分:0)

我们可以使用data.table。转换&#39; data.frame&#39;到&#39; data.table&#39; (setDT(y)),按&#39;&#39;&#39; b&#39;分组,循环显示Data.table(.SD)的子集并获取非NA元素< / p>

library(data.table)
setDT(y)[, lapply(.SD, function(x) x[!is.na(x)]) , .(a,b)]
#   a b  c d
#1: 1 1  0 0
#2: 1 3 NA 0