【问题标题】:Removing NA from csv data file从 csv 数据文件中删除 NA
【发布时间】:2017-06-07 08:04:04
【问题描述】:

我正在使用此代码导入数据

counts<-read.csv("data.csv", stringsAsFactors=FALSE, header=FALSE)

link to view the data

为了从数据中删除 NA,我使用了 2 种方法

1

lists <- lapply(as.list(counts), function(x) x[x != ""])

2

removeEMPTYstrings <- function(x) {
 newVectorWOstrings <- x[x != ""]
 return(newVectorWOstrings)
}

lists <- lapply(as.list(counts), removeEMPTYstrings)

但是这两种方法都没有从数据中删除 NA,我仍然收到此消息“错误:数据集中的 NA”。

我只想删除/忽略/未读取数据中的 NA,而不是删除整列或整行。

谢谢。

【问题讨论】:

  • 最好对数据使用内联可重现代码,而不是添加屏幕截图
  • 您展示的方法是删除空白而不是 NA。你可能需要is.na

标签: r csv import read.csv


【解决方案1】:

我们可以使用na.omit 删除NA

counts1 <- na.omit(counts)

complete.cases

counts1 <- counts[complete.cases(counts),]

或者如果我们需要删除每列的 NA

lapply(counts, function(x) x[!is.na(x)])

【讨论】:

  • na.omit 也没有删除 NA。我想保留不完整的案例。
  • @StatBio 请查看str(counts)。是真正的 NA 吗?
  • $ Col1 : int [1:125] 2 NA 4 NA NA 7 NA NA NA 11 ... $ Col2 : int [1:125] NA NA NA NA NA NA NA NA NA 11 。 .. $ Col3: int [1:125] NA 3 NA 5 6 NA 8 NA NA 11 ... $ Col4: int [1:125] NA NA NA NA NA NA NA 9 10 NA
  • @StatBio 基于它的预期输出是什么。可能是lapply(counts, function(x) x[!is.na(x)]),不过要看每列的NA个数,所以长度会不一样
  • lapply with function(x),应该删除 NAs 但仍然保持“NA 位置”为空且没有值。
猜你喜欢
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2022-09-22
  • 1970-01-01
  • 2017-02-14
  • 2021-12-25
  • 2011-05-03
相关资源
最近更新 更多