【发布时间】:2020-08-21 18:23:57
【问题描述】:
我有一个包含两列的表:您是否生病 (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
【问题讨论】:
-
很可能是因为您在
H01列中有NAs。请注意您尚未使用的 table 的useNA参数。此外,引用[中的列可能比使用$更好(在风格上)。 -
有道理;我想的也差不多。我将如何更换 NA?抱歉,我对 R 没有太多经验。
-
pe94.person$H01[is.na(p94.person$H01)] <- value可能。 -
嗯,但我不能替换所有的 NA,因为一些 NA 只是表示缺失值(即该人没有回应)。另外,我有点困惑为什么将其拆分(使用测试变量),但在一行中执行却不行?
-
因为当你拆分它时,R 不必推断
NA的索引与哪一行对应;您只是告诉它重新分配特定列中的所有值。
标签: r