使用NA按因子折叠r中的数据帧

时间:2018-01-12 22:50:00

标签: r dplyr

我想要折叠我的数据帧,以便每行只有一个因子变量,并且值全部折叠为每行一行。这是一个例子:

mat <- data.frame(type = c(rep("int",5), rep("num",5)), diag(sample.int(9,6), 10))
mat[mat == 0] <- NA
mat[5,11] <- 4

现在我想要这样:

  

type,X1,...,X8,X9,X10

     

int,2,7,...,NA,NA,4

     

num,NA,NA,...,3,1

1 个答案:

答案 0 :(得分:1)

type分组,然后将summarize_allna.omit

一起使用
mat %>% group_by(type) %>% summarise_all(funs(na.omit(.)[1]))

# A tibble: 2 x 11
#    type    X1    X2    X3    X4    X5    X6    X7    X8    X9   X10
#  <fctr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1    int     8     3     7     6     4    NA    NA    NA    NA     4
#2    num    NA    NA    NA    NA    NA     9     8     3     7     6