我有一个名为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
有什么建议吗?感谢
答案 0 :(得分:52)
一个好主意是在进行任何进一步分析之前将所有“”(空白单元格)设置为NA。
如果您正在从文件中读取输入,那么将所有“”强制转换为NAs是一个不错的选择:
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]
答案 1 :(得分:10)
不确切知道你拥有什么样的数据集,所以我提供了一般答案。
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