首先,如果这已经在另一篇文章中有了答案,对不起。我找不到它。我相信这应该不会很难,但是我只是没有看到它。
我有一个这样的数据框:
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
答案 0 :(得分:2)
一种选择是将apply
与MARGIN=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