繁体   English   中英

缺少编码为 NA 和“NA”的数据

[英]Missing data coded as NA and “NA”

我有一个数据集,其中包含数据框中的因子变量“gender”。 对性别缺失数据进行编码。 当我运行 fix(mydata) 时,我发现单元格实际上是空的。

我知道 is.na function 并修改了 function 在 web 上看到的 function 以将缺失数据替换为 9。我预计可能缺少更多数据的因子变量。 function 适用于数字数据,但是当我使用因子数据作为输入时,我没有收到错误,但丢失的数据项也没有变化,因为它没有被重新编码为 9。

Modified Function:
na.nine <- function (x) {
    x[is.na(x)] <- 9
    return(x)
}
mydata1$gender=na.nine(mydata1$gender)

结果是没有重新编码和警告消息:在[<-.factor ( *tmp* , is.na(x), value = 9): invalid factor level, NA generated Output 表明根本没有改变。

我需要保护这些数据。 它属于其他人,否则我会包括更多。

如果我在进行统计研究,我会删除包含缺失数据的因子变量的行,但如果我被要求将 <NA> 替换为 9,该怎么办? 如果不使用 fix(mydata1) 并一次更改一个,我不知道该怎么做? 如果我有 5000 个观察值要检查怎么办?

这里的任何帮助将不胜感激。 谢谢。 毫米

您在这里没有任何示例数据,但这应该可以解决我认为的问题。


## This will also show NAs in the sample as well as "NA"s
table(paste(mydata1$gender))


## Lets just keep "m" & "f" values with all else becoming NA
mydata1$gender<-ifelse(mydata1$gender=="m" | mydata1$gender=="f", mydata1$gender, NA)


## This is the corrected output where only "m" & "f" remain
table(paste(mydata1$gender)) 


您需要先将因子转换为字符,如果需要,替换并转换回因子。

#Modified Function:
na.nine <- function (x,TOREPLACE,FACTOR=TRUE) {
    x <- as.character(x)
    x[is.na(x)] <- TOREPLACE
    # if character is ok
    #return(x)
    return(factor(x))
}

mydata = data.frame(
gender=sample(c("M","F"),10,replace=TRUE),
age = sample(20:70,10,replace=TRUE)
)
# make some NAs
mydata$gender[1:3] <- NA
# use your function
mydata$gender <- na.nine(mydata$gender,9)
mydata

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM