1. ホーム
  2. r

[解決済み】"置換する項目数が置換長の倍数でない "と表示されるのはなぜですか?

2021-12-29 14:20:39

質問事項

2つの変数DTとODを含むdataframe combiを持っています。

DTとODの両方にいくつかの欠損値NAがありますが、同じレコードである必要はありません。

ODに欠損がない場合、DTの欠損値をODに置き換えようとしましたが、"置き換える項目の数が置き換え長さの倍数でない"という警告が表示されました。長さの不一致を意味することはわかりますが、同じデータフレーム内の2つの列がなぜ異なる長さを持つことができるのか理解できません。もっと深刻なのは、出力が完全に正しくないことです(以下を参照)。

combi$DT[is.na(combi$DT) & ! is.na(combi$OD) ] <- combi$OD

出力

id   DT           OD
67   2010-12-12   2010-12-12
68   NA           NA
69   NA           2010-12-12
70   NA           NA

期待するのは DT になります。 2010-12-12 のために id=69 (日付はPOSIXct)。

データフレームの長さについて、私が理解していないことがあるのでしょう。どなたか教えてください。

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

置換する項目数が置換長の倍数でないため。置換する項目数は、以下の行数です。 is.na(combi$DT) & !is.na(combi$OD) の行数より少ない。 combi (つまり、置換の長さ)。

を使用する必要があります。 ifelse :

combi$DT <- ifelse(is.na(combi$DT) & !is.na(combi$OD), combi$OD, combi$DT)

N.B.は & !is.na(combi$OD) は冗長です:両方が NA であれば、その代わりとなるのは NA . ですから

combi$DT <- ifelse(is.na(combi$DT), combi$OD, combi$DT)