我有一个包含流行病学数据(48232 行和 74 列)的大型数据框。我将它作为 .csv 文件读入 R 并使用命令 na.strings="NA"。我有几个二分变量,YES/NO 答案编码为 0=YES,1=NO。这些变量也包含 NA。我想创建一个包含所有列的新数据框,但删除那些具有 Diab=0 的样本,而不是删除 Diab=NA。我为此使用方括号。这样做时,新数据框的维度是正确的,但是,对于新数据框中的所有其他二分变量,所有 Diab=NA 的样本最终都为 NA !我该如何解决这个问题?我试图生成一个小例子:
Diab<-c(0,NA,1,1,1,0,0,NA, NA)
INF<-c(0,1,1,1,1,1,NA, 0,1)
HYP<-c(NA, 0,1,0,NA,1,1,1,1)
a<-data.frame(cbind(Diab, INF, HYP))
dim(a)
table(a$Diab,a$HYP, exclude=NULL, dnn=c("Diab", "HYP"))
#In total 2 persons HYP=0, 5 persons HYP=1, 2 persons HYP=NA.
b<-a[!a$Diab==0,]
dim(b)
##When removing those Diab=0 I'm expecting to still have 2 persons HYP=0,
#3 persons HYP=1 and 1 person HYP=NA, but not...
table(b$HYP, exclude=NULL, dnn="HYP")
#6 persons in total but those that were Diab=NA are now turned into HYP=NA??
#The same happens with the INF variable.
table(a$Diab,a$INF, exclude=NULL, dnn=c("Diab", "INF"))
table(b$INF, exclude=NULL, dnn="INF")
我已经阅读了关于神秘 NA 行的这个 SO 问题和关于子集与括号的邮件列表线程, 但不幸的是,即使它看起来有点熟悉,它也没有帮助我......
任何帮助我都会非常高兴!谢谢,夏洛塔