根据其他变量是否为NA创建具有值的变量

时间:2019-01-25 11:17:07

标签: r

首先,如果这已经在另一篇文章中有了答案,对不起。我找不到它。我相信这应该不会很难,但是我只是没有看到它。

我有一个这样的数据框:

structure(list(X1 = c(0.3, 0.2, 0.3, 0.2, NA, NA, NA, NA), X2 = c(0.2, 
0.2, NA, NA, 0.2, 0.2, NA, NA), X3 = c(5.1, NA, 2.8, NA, 1.4, 
NA, 0.5, NA)), row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L), class = "data.frame")

我想创建第4列Variables,其中包含一个字符串,该字符串的列名不是NA。请在下面查看我想要的输出。

   X1  X2  X3  Variables
1 0.3 0.2 5.1  X1,X2,X3
2 0.2 0.2  NA  X1,X2
3 0.3  NA 2.8  X1,X3
4 0.2  NA  NA  X1
5  NA 0.2 1.4  X2,X3
6  NA 0.2  NA  X2
7  NA  NA 0.5  X3
8  NA  NA  NA  None

1 个答案:

答案 0 :(得分:2)

一种选择是将applyMARGIN=1一起使用来遍历行,使用NA除去na.omit元素,得到names和{ {1}}一起(paste

toString

最好将df1$Variables <- apply(df1, 1, function(x) toString(names(na.omit(x)))) is.na(df1$Variables) <- df1$Variable == "" 用于所有NA的行


NA类似的实现方式是使用tidyverse

pmap