1. ホーム
  2. r

[解決済み] Rの値NAを別の列の値で置き換える。

2022-02-14 07:10:39

質問

dfAByのA列のNA値を、B列のyearを基準にした値に置き換えたいのですが、どうすればいいですか?例えば、私のdfは次のとおりです。

                 >dfABy 
                 A    B   Year
                 56   75  1921
                 NA   45  1921
                 NA   77  1922
                 67   41  1923
                 NA   65  1923

その結果、私が参加することになったのは

                 > dfABy
                 A    B   Year
                 56   75  1921
                *45*  45  1921
                *77*  77  1922
                 67   41  1923
                *65*  65  1923

P.S.: *は、各年度のB列からA列に置き換える値です。

どのように解決するのですか?

Rの辞書で最も読みやすく理解しやすい答えは、おそらくifelseを使うことでしょう。 そこで、Richardのdataframeを拝借して、こんなことができる。

df <- structure(list(A = c(56L, NA, NA, 67L, NA),
                     B = c(75L, 45L, 77L, 41L, 65L),
                     Year = c(1921L, 1921L, 1922L, 1923L, 1923L)),.Names = c("A", 
                                                                                                                            "B", "Year"), class = "data.frame", row.names = c(NA, -5L))
df$A <- ifelse(is.na(df$A), df$B, df$A)