2016-02-26 81 views
0

我正在使用一些非常大的数据框,为了缩短计算量,我需要排除具有NA值的行,但是在计算并创建新数据框后我需要将它们带回(到新的数据框)。有没有可能跟踪我排除哪些行?如何跟踪数据框中的哪些行在R中具有NA值

例如:

X1 X2 X3 X4 
1 3 4 5 4 
2 3 3 3 4 
3 NA NA NA NA 
4 4 3 3 2 

所以,我要的是“complete.cases” 3号,是指与NA的行数被排除之后得到的。是否可以不添加额外的列与编号?

+0

是有可能的。自己试过了什么? –

+0

检查'?complete.cases' –

+0

@Emkin欢迎光临SO。请帮助我们通过在R中包含示例数据(例如,通过'dput'或'read.table'和'text ='参数生成的),预期结果(数据)以及您尝试过的代码来创建快速准确的答案远。谢谢! –

回答

2

您可以使用na.omit,然后attr(na.omit(df), "na.action")给出了3

此外,

rownames(df)[!complete.cases(df)] 
# [1] "3" 
+0

作为一个变种,我会建议'has_na < - which(!complete.cases(df))' –

1

要返回行包含至少一个NA指数,我们也可以使用:

rownames(df[rowSums(is.na(df)) > 0,]) 
# [1] "3"