将多个带有NA的columnts合并为一个

时间:2019-03-13 20:51:17

标签: r dplyr

我有几列具有不重叠数据:

a <- c(rep(1, 10), rep(NA, 20))
b <- c(rep(NA, 10), rep(2, 10), rep(NA, 10))
c <- c(rep(NA, 20), rep(3, 10))
data <- cbind(a, b, c)

输出:

       a  b  c
 [1,]  1 NA NA
 [2,]  1 NA NA
 [3,]  1 NA NA
 [4,]  1 NA NA
 [5,]  1 NA NA
 [6,]  1 NA NA
 [7,]  1 NA NA
 [8,]  1 NA NA
 [9,]  1 NA NA
[10,]  1 NA NA
[11,] NA  2 NA
[12,] NA  2 NA
[13,] NA  2 NA
[14,] NA  2 NA
[15,] NA  2 NA
[16,] NA  2 NA
[17,] NA  2 NA
[18,] NA  2 NA
[19,] NA  2 NA
[20,] NA  2 NA
[21,] NA NA  3
[22,] NA NA  3
[23,] NA NA  3
[24,] NA NA  3
[25,] NA NA  3
[26,] NA NA  3
[27,] NA NA  3
[28,] NA NA  3
[29,] NA NA  3
[30,] NA NA  3

使用dplyr将这N列(多于3列)折叠成一列的方式是什么,所以

result <- c(rep(1, 10), rep(2, 10), rep(3, 10))

当然,在实际数据中,实际数据不是(1, 2, 3),而不是NA。它唯一的共同属性是不是Private Sub tmp10_Click() y = 1 Dim cCtl As Control For Each cCtl In begin.Controls For x = 1 To 67 If cCtl.Name = Cells(x, 1) Then Cells(x, 4) = "true" Next y = y + 1 Next End Sub

1 个答案:

答案 0 :(得分:3)

在基数R中,

  1. 对于数字,您可以使用rowSums
    rowSums(data, na.rm = TRUE)
  1. 对于非数字,max.col可用于标识具有非NA值的列
   data[cbind(1:NROW(data), max.col(!is.na(data)))]