2017-03-08 4 views
0

データセットに部分的に重複した行があります。これらの行は2つの変数に一致し、残りの変数にはいくつかのNAsがあります。これらの部分的に重複した行のペアを組み合わせることができれば、その行の完全なケースが得られます。2つの変数でRの重複行を折りたたむ

2つの変数の類似の値に基づいてデータセット内の行を組み合わせると、1つの完全な行を残して、各別の行にNAsを置き換えることはできますか?

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) 
+2

あなたの問題(そして理想的には期待される結果)を説明するためにいくつかの例のデータを提供できますか? – SymbolixAU

+0

2つの変数は常に同じですか?もしそうなら、 'your_data%>%group_by(match1、match2)%>%summarize_all(coalesce)'がそれを行うべきです。 – Gregor

+0

私はいくつかのコードを追加しようとしました。基本的には、yをzのように見せたいと思います。 @SymbolixAU – DataCruncher124

答えて

0

data.tableを使用できます。 Data.table(.SD)のサブセットthroughthe 'A'、 'B'、ループごとにグループ化され、(setDT(y) ')data.table' に 'data.frame' を変換および非NA素子を得る

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 
+2

OPは 'dplyr'タグを設定しているので、おそらく' dplyr'答えを探しています。 – Uwe

+0

@UweBlockはい、そうかもしれません。しかし、答えは他人にも読める。 – akrun

関連する問題