2017-01-23 4 views
0

私はアマルガメートを2つの行にまとめてみると、出力が両方の世界で最高になるようにしています。私はddplyまたはaggregateを使用していくつかの解を読んだが、数値データでのみ動作する。複数のデータクラスを持つ行をマージする

以下は、私がしようとしていることの例です。

入力:キーはCNTRY

理想的です

x <- c("Yemen", 1, NA, NA, 4, 5, "Six") 
y <- c("Yemen", NA, "B", 3, NA, 6, "Six") 

DF <- as.data.frame(rbind(x,y)) 
colnames(DF)[1] <- c("CNTRY") 

出力

"Yemen", 1, "B", 3, 4, 5, "Six" 

、私はxまたはyの値を保持するかどうかを選択することができるはずです彼らはdiffe場合家賃。


編集1:

溶液は、この例では、データフレームDF上で動作していないx & yべきです。私のデータフレームには複数のアカウントがあり、複数のインスタンスが重複しているが、アカウント(キー)を共有しているすべての行をマージしようとしています。

答えて

0

から​​3210機能を使用することができます。

# dummy data with 2 countries to group on 
x <- c("Yemen", 1, NA, NA, 4, 5, "Six") 
y <- c("Yemen", NA, "B", 3, NA, 6, "Six") 
xx <- c("XXX", 3, NA, 33, 4, 7, "Four") 
yy <- c("XXX", 2, "B", NA, NA, NA, NA) 
DF <- as.data.frame(rbind(x,y,xx,yy)) 
colnames(DF)[1] <- c("CNTRY") 

# using tidyr fill function up and down 
library(dplyr) 
library(tidyr) 

DF %>% group_by(CNTRY) %>% 
    fill_(colnames(DF), .direction = "down") %>% 
    fill_(colnames(DF), .direction = "up") %>% 
    slice(1) 

# Source: local data frame [2 x 7] 
# Groups: CNTRY [2] 
# 
# CNTRY  V2  V3  V4  V5  V6  V7 
# <fctr> <fctr> <fctr> <fctr> <fctr> <fctr> <fctr> 
# 1 XXX  3  B  33  4  7 Four 
# 2 Yemen  1  B  3  4  5 Six 
2

我々はtidyrパッケージから埋める使用dplyr

library(dplyr) 
coalesce(x,y) 
#[1] "Yemen" "1"  "B"  "3"  "4"  "5"  "Six" 
関連する問題