1. ホーム
  2. r

[解決済み】値を置き換えようとすると、"データフレームの添え字の割り当てで欠損値は許可されない"

2022-01-28 11:25:41

質問

病気になったかどうか(H01)と病気になった日数(H03)という2つの列を持つテーブルがあります。しかし、H01==falseの場合、病欠日数がNAになってしまうので、0にしたいのですが、このような場合。

test <- pe94.person[pe94.person$H01 == 12,]
test$H03 <- 0

問題なく動作しています。しかし、元のデータフレームの値を置き換えたいのです。しかし、これは失敗します。

pe94.person[pe94.person$H01 == 12,]$H03 <- 0

返ってくる。

> pe94.person[pe94.person$H01 == 12,]$H03 <- 0
Error in `[<-.data.frame`(`*tmp*`, pe94.person$H01 == 12, , value = list( : 
  missing values are not allowed in subscripted assignments of data frames

なぜそうなるのか、心当たりはありますか?参考までに、頻度表はこんな感じです。

> table(pe94.person[pe94.person$H01 == 12,]$H03)

 2  3  5 28 
 3  1  1  1 

解決方法は?

を使用することができます。 ifelse というように

pe94.person$foo <- ifelse(!is.na(pe94.person$H01) & pe94.person$H01 == 12, 0, pe94.person$H03)

は、foo が条件を満たしているかどうかを確認し、先に進んでそれを pe94.person$H03 を直接入力します。私は、新しい変数に代入して、その後の分析でそれを使う方が安全だと思います。