2017-09-06 16 views
0

私は因子の列を含むRのデータフレームを持っています。列には空白がありますが、NA値は含まれていません。列の要素の1つにアクセスしようとすると、いくつかの要素レベルが表示されます。R:因子ベクトル/データフレームの欠損値を追跡する

この種類の欠落データを特定して削除したいと考えています。それ、どうやったら出来るの?

ここに私のデータフレームのコピーがあります。 2列目には私の問題を示しています

> dput(effective_data) 
structure(list(`Not this column` = structure(c(2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L), .Label = c("", "unavailable"), class = "factor"), `This column` = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L), .Label = c("", "EVENT_VALUE_INTRA_ENB (1)", 
"EVENT_VALUE_X2 (2)"), class = "factor")), .Names = c("Not this column", 
"This column"), class = "data.frame", row.names = c(NA, -134L 
)) 
+2

私は質問にサンプルデータセットを追加しました。 SOで他の人と再現可能な形式でデータを共有したい場合は、コマンド 'dput(<あなたのデータセットオブジェクトの名前>)を使用します。誰でもその結果を得て、あなたに問題をもたらしたのと全く同じデータを得ることができます。ベストプラクティスの詳細については、https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-exampleを参照してください。 –

答えて

0

あなたはunique(x) == ""

apply(effective_date,2,function(x) any(unique(x)=="")) 
# Not this column  This column 
#   FALSE   TRUE 
列を探して、列、 apply(..,2,..)

effective_date[, !apply(effective_date,2,function(x) any(unique(x)==""))] 

説明

反復を、試すことができます0

サブセットデータフレームを論理

effective_date[ , <logical>]