R-NA值中的数据帧

R-NA值中的数据帧,r,dataframe,R,Dataframe,我正在尝试删除数据框中第3列为NA的所有行: new.frame <- data[(!is.na(data$z)),] 我如何才能做到这一点?请提供可复制的示例。以下是一个有效的方法: 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,

我正在尝试删除数据框中第3列为NA的所有行:

new.frame <- data[(!is.na(data$z)),]

我如何才能做到这一点?

请提供可复制的示例。以下是一个有效的方法:

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> 
R>set.seed(42)
R> DF 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不适用
3 0.3631284 Z 1.936759
4 0.6328626 Y NA
5 0.4042683 C 2.625877
6-0.1061245牛顿纳
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> 新的,新的,新的
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>

请提供可复制的示例。以下是一个有效的方法:

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> 
R>set.seed(42)
R> DF 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不适用
3 0.3631284 Z 1.936759
4 0.6328626 Y NA
5 0.4042683 C 2.625877
6-0.1061245牛顿纳
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> 新的,新的,新的
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
new.frame2 all.equal(new.frame,new.frame2)
[1] 真的

还有可能更容易阅读的
complete.cases()。使用德克的数据:

new.frame2 <- DF[complete.cases(DF) ,]

> all.equal(new.frame, new.frame2)
[1] TRUE
new.frame2 all.equal(new.frame,new.frame2)
[1] 真的
试试这个:

 new.frame.nonull <- data[(!is.null(data$z)),]
 new.frame <- new.frame.nonull[(!is.na(new.frame.nonull$z)),]
new.frame.nonull试试这个:

 new.frame.nonull <- data[(!is.null(data$z)),]
 new.frame <- new.frame.nonull[(!is.na(new.frame.nonull$z)),]

new.frame.nonull您也可以对整个数据集使用na.ommit函数。

您也可以对整个数据集使用na.ommit函数。

听起来您的数据框没有一个名为“z”的列。听起来您的数据框没有一个名为“z”的列。但是
完成。如果焦点(
z
)以外的列中有
NA
值,则案例将不会执行您想要的操作列,您希望保留具有
NA
s但不在焦点列中的行…但
已完成。如果您在焦点(
z
)列以外的列中具有
NA
值,并且您希望保留具有
NA
s但不在焦点列中的行,则案例将不会执行您想要的操作。。。