web-dev-qa-db-ja.com

Rの空白とNAを除外

可能性のある複製:
R-data.frameのNAを持つ行を削除

複数の列を持つsub.newという名前のデータフレームがあります。そして、NAまたは_blank space_ ""を含むセルを除外しようとしています。
subset()を使用しようとしましたが、特定の列条件を対象としています。とにかくデータフレーム全体をスキャンして、セルがNAまたは_blank space_でないサブセットを作成する必要はありますか?

以下の例では、最初の行のみを保持する必要があります。

_# ID               SNP             ILMN_Strand   Customer_Strand
ID1234              [A/G]          TOP           BOT
Non-Specific        NSB (Bgnd)     Green
Non-Polymorphic     NP (A)         Red
Non-Polymorphic     NP (T)         Purple
Non-Polymorphic     NP (C)         Green
Non-Polymorphic     NP (G)         Blue
Restoration         Restore        Green
_

助言がありますか?ありがとう

14
lusketeer

さらなる分析の前に、すべての ""(空白セル)をNAに設定することをお勧めします。

ファイルから入力を読み取る場合は、すべての「」をNAにキャストすることをお勧めします。

_foo <- read.table(file="Your_file.txt", na.strings=c("", "NA"), sep="\t") # if your file is tab delimited
_

テーブルがすでにロードされている場合は、次のように行動できます。

_foo[foo==""] <- NA
_

次に、NAのない行のみを保持するには、na.omit()を使用できます。

_foo <- na.omit(foo)
_

または、NAのない列を保持するには:

_foo <- foo[, colSums(is.na(foo)) == 0] 
_
53
Ali

どんな種類のデータセットがあるのか​​正確にはわからないので、一般的な答えを提供します。

x <- c(1,2,NA,3,4,5)
y <- c(1,2,3,NA,6,8)
my.data <- data.frame(x, y)
> my.data
   x  y
1  1  1
2  2  2
3 NA  3
4  3 NA
5  4  6
6  5  8
# Exclude rows with NA values
my.data[complete.cases(my.data),]
  x y
1 1 1
2 2 2
5 4 6
6 5 8
11
Andrej