1

疫学データ (48232 行 74 列) を含む大きなデータ フレームがあります。それを .csv ファイルとして R に読み込み、コマンド na.strings="NA" を使用します。YES/NO の回答が 0=YES、1=NO でコード化された二分変数がいくつかあります。これらの変数には NA も含まれます。すべての列を含む新しいデータ フレームを作成したいのですが、Diab=NA を削除するのではなく、 Diab =0 のサンプルを削除します。これには角括弧を使用します。これを行うと、新しいデータ フレームの次元は正しくなりますが、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の質問、サブセット化とブラケット化に関するこのメーリングリストのスレッドを読みまし たが、残念ながら、少し慣れているように見えても役に立ちません...

私はどんな助けにも非常に満足しています! ありがとう、シャーロッタ

4

2 に答える 2

0

これはあなたが望んでいたことだと思います:

> a[(a$Diab != 0) | is.na(a$Diab),]
  Diab INF HYP
2   NA   1   0
3    1   1   1
4    1   1   0
5    1   1  NA
8   NA   0   1
9   NA   1   1

Diabゼロ ( != 0) または等しいNA( ) でないエントリを検索する必要がありますis.na。ブール演算子|は を意味しORます。

于 2013-04-10T11:27:54.810 に答える