在R中的data.table中删除NA值

4

我正在尝试用R语言做一个看似很简单的操作(抱歉,因为我在使用data.tables方面还是个新手),但我没有成功得到正确的解决方案。我试图删除特定列(“Ground_Tru”)上存在NA值的行。目前为止,这是我的尝试:

all_data <- fread ("all_vbles.txt",header=TRUE, na.strings=c("NA","N/A",""))
na.omit (all_data, cols="Ground_Tru")

我收到了消息

空数据表(0行)共75列:OID_,IN_FID,Polygon_ID,DIST_highw,DIST_railw,DIST_port...

但是“Ground_Tru”字段有很多NA值。感谢您的帮助。


如果您使用了na.omit,则只要在其中一列中有任何NA,整行数据都将被省略。请告知我们您想如何继续。 - akrun
1
all_data[!is.na(Ground_Tru)] 的翻译是什么? - simone
2
@ParthChaudhary 这是一个 data.table,它应该可以在没有 , 的情况下正常工作。 - akrun
谢谢@simone,实际上这个方法可行,我只是想知道如何使用na.omit来加速计算... - vizpi
1
据我所知,你的代码应该是可以工作的。如果它不能正常运行,我们可以提供一些诊断建议来找出原因,但在发布之前,你真的应该创建一个可重现的示例。以下是一些指导:https://dev59.com/eG025IYBdhLWcg3whGSx#28481250 - Frank
显示剩余2条评论
2个回答

2
使用complete.cases函数:
all_data <- all_data[complete.cases(all_data[, 'Ground_Tru'])]

1
最终我成功解决了问题。显然,使用data.table库时,R读取列名存在一些问题,所以我遵循这里提供的建议之一: read.table doesn't read in column names 因此代码变成了这样:
library(data.table)

read.table("all_vbles.txt",header=T,nrow=1,sep=",",dec=".",quote="")
all_data <- fread ("all_vbles.txt",header=FALSE, skip=1, ,sep="auto", na.strings=c("NA","N/A","")) 
setnames (all_data,header)
test_data <- na.omit (all_data, "Ground_Tru") 

似乎工作得很好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接