我想要折叠我的数据帧,以便每行只有一个因子变量,并且值全部折叠为每行一行。这是一个例子:
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
答案 0 :(得分:1)
按type
分组,然后将summarize_all
与na.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