2017-09-12 4 views
-2

これを1列にマージするには?2列をNA値でマージする簡単な方法

df <- data.frame(a = c("1", "2", NA, NA), b = c(NA, NA, "3", "4"), c = c(NA, "5", "6", NA), stringsAsFactors = F)

私はNAせずにBからすべての値を取得したいです。だから、 "1"、 "2"、 "3"、 "4"でなければなりません。

(今DFに2つ以上の列を選択する必要がある)これは良くない作品: df$a <- df$b[!is.na(df$b)]

+1

[関連...](https://stackoverflow.com/questions/192) 53820/how-to-implement-coalesce-efficient-in-r) – Sotos

+0

リンクされた投稿を参照してください。複数の列を扱う多くのソリューションがあります。例えば、以下のakrunで示唆されているように、 'dplyr :: coalesce(df $ a、df $ b、df $ c)' – zx8754

答えて

0

我々はpmax

df$a <- do.call(pmax, c(df, na.rm = TRUE)) 

それとも​​3210

とを使用することができます
library(dplyr) 
df %>% 
    mutate(a = coalesce(a,b)) 
# a b 
#1 1 <NA> 
#2 2 <NA> 
#3 3 3 
#4 4 4 
+2

を試してください。この '合体(coalesce)'機能は事を行う。 –

関連する問題