我想从我的数据帧,其中第三列是NA删除所有行:数据帧中的R - NA值
new.frame <- data[(!is.na(data$z)),]
但我发现了一个错误。
Warning message:
In is.na(data$z) : is.na() applied to non-(list or vector) of type 'NULL'
我该如何做到这一点?
我想从我的数据帧,其中第三列是NA删除所有行:数据帧中的R - NA值
new.frame <- data[(!is.na(data$z)),]
但我发现了一个错误。
Warning message:
In is.na(data$z) : is.na() applied to non-(list or vector) of type 'NULL'
我该如何做到这一点?
请重复举例。这是一个工程:
R> set.seed(42)
R> DF <- data.frame(a=rnorm(10), b=sample(LETTERS, 10, replace=TRUE),
+> z=cumsum(runif(10)))
R> DF[c(2,4,6),"z"] = NA
R> DF
a b z
1 1.3709584 X 0.737596
2 -0.5646982 D NA
3 0.3631284 Z 1.936759
4 0.6328626 Y NA
5 0.4042683 C 2.625877
6 -0.1061245 N NA
7 1.5115220 K 3.466127
8 -0.0946590 X 3.673786
9 2.0184237 L 4.580388
10 -0.0627141 V 5.192166
R> new.frame <- DF[(!is.na(DF$z)),]
R> new.frame
a b z
1 1.3709584 X 0.737596
3 0.3631284 Z 1.936759
5 0.4042683 C 2.625877
7 1.5115220 K 3.466127
8 -0.0946590 X 3.673786
9 2.0184237 L 4.580388
10 -0.0627141 V 5.192166
R>
还有complete.cases()
这可能更容易阅读。利用德克的数据:
new.frame2 <- DF[complete.cases(DF) ,]
> all.equal(new.frame, new.frame2)
[1] TRUE
但'complete.cases'不会做你想要的,如果你在列('z')列以外的列中有'NA'值并且你想保留具有'NA'但没有在这个列中的行列... –
试试这个:
new.frame.nonull <- data[(!is.null(data$z)),]
new.frame <- new.frame.nonull[(!is.na(new.frame.nonull$z)),]
我认为你的代码需要一些清理。 – Dason
您也可以对整个数据集使用na.omit功能。
这听起来像你的数据框没有一个名为“z”的列。 – Owen