当尝试替换值时,“数据帧的下标分配中不允许缺少值”

我有一张桌子有两列:你是否生病(H01)和生病天数(H03)。但是,如果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。我觉得赋予它一个新的变量更安全,通常在随后的分析中使用它。

转载注明原文:当尝试替换值时,“数据帧的下标分配中不允许缺少值” - 代码日志