20

可能重复:
R - 删除 data.frame 中带有 NA 的行

我有一个名为 sub.new 的数据框,其中包含多个列。我试图排除任何包含NAblank space”的单元格。
我尝试使用subset(),但它针对特定列有条件。无论如何要扫描整个数据框并创建一个没有单元格的子集NAblank 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

有什么建议么?谢谢

4

2 回答 2

58

一个好主意是在任何进一步分析之前将所有“”(空白单元格)设置为 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] 
于 2012-10-06T21:29:36.087 回答
11

不确切知道您拥有什么样的数据集,所以我提供一般性答案。

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
于 2012-10-06T21:18:47.647 回答