2017-02-04 9 views
1

同じ名前の変数を持つRにさまざまなデータフレームをマージしました。マージされたファイルでは、varA、varA.x、varA.x1、varA.x.yなどの変数名を取得しました。これらの変数のすべての内容を1つの列にマージするファイルを作成します。私のファイルの例として:Rのデータフレーム内の反復変数の内容の結合R

ID weight age varA 
1 50 30 2 
2 78 34 3 
3 56 56 6 
4 56 67 7 

ifelse使用することは不可能です: `データ$ VARA = ifelse(is.na(VARA

ID weight age varA varA.x varA.x.y varA.x.y.1 
1 50 30 2  NA  NA  NA 
2 78 34 NA  3  NA  NA 
3 56 56 NA  NA  NA  6 
4 56 67 NA  NA  7   NA 

私は次のようになり、ファイルをしたいです。 x)、varA.y、varA.x)、私は非常に多くの繰り返し変数があるので、ステートメントが長すぎるためです。

お願いします。どうもありがとうございます。

答えて

1

我々はtidyr

library(tidyverse) 
df1 %>% 
    mutate(varA = coalesce(varA, varA.x, varA.x.y, varA.x.y.1)) %>% 
    select_(.dots = names(.)[1:4]) 
# ID weight age varA 
#1 1  50 30 2 
#2 2  78 34 3 
#3 3  56 56 6 
#4 4  56 67 7 

から​​3210を使用するか、base R

cbind(df1[1:3], varA=do.call(pmax, c(df1[grep("varA", names(df1))], na.rm = TRUE))) 
から pmaxを使用することができます
関連する問題