如果两列都包含 R 中的缺失值,如何添加两列?

如果我们想添加 R 数据框的两列,并且每列都包含缺失值,则可以通过以下方式之一添加列 -

  • 如果它们是数字,则添加两个列值。

  • 如果其中一列缺少值,则返回数字。

  • 如果两列都有缺失值,则返回 NA。

为此,我们可以借助 apply 函数和 ifelse 函数,如下面给出的示例所示。

示例 1

以下代码段创建了一个示例数据框 -

x1<-sample(c(NA,1,2),20,replace=TRUE)

x2<-sample(c(NA,5),20,replace=TRUE)

df1<-data.frame(x1,x2)

df1

创建以下数据框 -

    x1 x2

1   1  NA

2   1   5

3   2   5

4   1   5

5   2   5

6  NA  NA

7   2  NA

8   1  NA

9   1   5

10 NA  NA

11  1  NA

12  2  NA

13 NA  NA

14 NA  NA

15  1  NA

16  1   5

17 NA  NA

18  1  NA

19  2  NA

20 NA   5

要添加 df1 的列,请将以下代码添加到上述代码段中 -

x1<-sample(c(NA,1,2),20,replace=TRUE)

x2<-sample(c(NA,5),20,replace=TRUE)

df1<-data.frame(x1,x2)

df1$Sum<-apply(cbind(df1$x1,df1$x2),1,function(x) ifelse(all(is.na(x)),NA,sum(x,na.rm=T)))

df1

输出结果

如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出: -

    x1  x2 Sum

1   1  NA   1

2   1   5   6

3   2   5   7

4   1   5   6

5   2   5   7

6  NA  NA  NA

7   2  NA   2

8   1  NA   1

9   1   5   6

10 NA  NA  NA

11  1  NA   1

12  2  NA   2

13 NA  NA  NA

14 NA  NA  NA

15  1  NA   1

16  1   5   6

17 NA  NA  NA

18  1  NA   1

19  2  NA   2

20 NA   5   5

示例 2

以下代码段创建了一个示例数据框 -

y1<-sample(c(NA,rnorm(2)),20,replace=TRUE)

y2<-sample(c(NA,rnorm(2)),20,replace=TRUE)

df2<-data.frame(y1,y2)

df2

创建以下数据框 -

      y1              y2

1   0.5109281     -0.6697566

2   NA            -0.1898259

3   NA            -0.1898259

4  -0.9540862     -0.6697566

5   NA            -0.1898259

6   NA            -0.1898259

7   NA             NA

8   0.5109281     -0.6697566

9   NA             NA

10  0.5109281      NA

11  0.5109281     -0.6697566

12 -0.9540862      NA

13 -0.9540862     -0.6697566

14  NA            -0.1898259

15  0.5109281     -0.1898259

16  NA            -0.1898259

17  0.5109281      NA

18  NA            -0.6697566

19  NA            -0.1898259

20  NA             NA

要添加 df2 的列,请将以下代码添加到上述代码段中 -

y1<-sample(c(NA,rnorm(2)),20,replace=TRUE)

y2<-sample(c(NA,rnorm(2)),20,replace=TRUE)

df2<-data.frame(y1,y2)

df2$Sum<-apply(cbind(df2$y1,df2$y2),1,function(x) ifelse(all(is.na(x)),NA,sum(x,na.rm=T)))

df2

输出结果

如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出: -

       y1             y2          Sum

1   0.5109281      -0.6697566  -0.1588286

2   NA             -0.1898259  -0.1898259

3   NA             -0.1898259  -0.1898259

4  -0.9540862      -0.6697566  -1.6238429

5   NA             -0.1898259  -0.1898259

6   NA             -0.1898259  -0.1898259

7   NA              NA          NA

8   0.5109281      -0.6697566  -0.1588286

9   NA              NA          NA

10  0.5109281       NA          0.5109281

11  0.5109281      -0.6697566  -0.1588286

12 -0.9540862       NA         -0.9540862

13 -0.9540862      -0.6697566  -1.6238429

14  NA             -0.1898259  -0.1898259

15  0.5109281      -0.1898259   0.3211022

16  NA             -0.1898259  -0.1898259

17  0.5109281       NA          0.5109281

18  NA             -0.6697566  -0.6697566

19  NA             -0.1898259  -0.1898259

20  NA              NA          NA

以上是 如果两列都包含 R 中的缺失值,如何添加两列? 的全部内容, 来源链接: utcz.com/z/341305.html

回到顶部