【问题标题】:Exclude Blank and NA in R [duplicate]在 R 中排除空白和 NA [重复]
【发布时间】:2012-09-27 15:37:27
【问题描述】:

可能重复:
R - remove rows with NAs in data.frame

我有一个名为 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

有什么建议吗?谢谢

【问题讨论】:

  • 他们有什么问题?你能给我们一些示例数据吗?
  • 您在使用矢量吗?数据框?如果数据框只有在行中的一个元素为空白或 NA 时,你想要什么?请提供更多详细信息。
  • 我进行了搜索,但没有成功。
  • @user1301840:谷歌搜索“R 删除带有 NA 的行”,或使用该短语搜索 StackOverflow,都将上述问题作为最高结果。
  • This question 对于从数据集中删除 NAs 的其他方法有一些很好的答案。

标签: r na


【解决方案1】:

在进行任何进一步分析之前,最好将所有“”(空白单元格)设置为 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] 

【讨论】:

  • 它成功了,但它删除了所有行。我想我仍然必须缩小到我想要进行 NA 检查的列。感谢您的帮助
  • 感谢您的回答!确实之前已经问过上述问题,但是如果一个单元格是空白单元格而不是 NA 单元格,那么这非常有用。
  • 你能指定na.omit是什么吗? R 3.1.1 中没有包na
  • @LéoLéopoldHertz준영,na.omit() 是 R 基础包中的一个函数。句点在 R 中表示函数的方式与在 Python 中不同。
  • 使用 dplyr,可以像这样以简短易读的方式编写此代码:foo %&gt;% na_if("") %&gt;% na.omit
【解决方案2】:

不知道你到底有什么样的数据集,所以我提供一般性的答案。

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

【讨论】:

  • 这是否也排除了“”?
  • 没有。我建议你首先定义你的数据集中有什么样的 NA 值。
  • 您可以先通过类似于my.data[my.data == ""] &lt;- NA 的操作将 "" 值转换为 NA,然后使用提供的答案。
  • @Andrej 我不太明白“什么样的 NA 值”,它只显示 NA。
  • 您必须按照@Dason 的建议将所有出现的 "" 重新编码为 NA
猜你喜欢
  • 2020-07-15
  • 2017-07-19
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
相关资源
最近更新 更多