要分组的变量太多,而要生成的变量很多

时间:2016-06-21 09:31:43

标签: r

我有很多变量要分组并产生平均值。我已经给出了下面的r代码。任何其他方式来缩短代码。

a<-b %>%
group_by(c,d,e,f,g,h,i,j,k,l) %>%
summarize(numbobs =n(),m= mean(m),n= mean(n),o= mean(o),p= mean(p),q= mean(q),r= mean(r)s= mean(s)) 

1 个答案:

答案 0 :(得分:0)

我们可以做一些事情来缩短它。

1)通过使用group_by_,我们可以通过传递具有列名称('nm1')

的对象来分组许多变量

2)使用summarise_each将相同的功能(mean)应用于多个列。

nm1 <- letters[3:12]
b %>%
   group_by_(.dots = nm1) %>%
   mutate(n = n()) %>%
   group_by(n, add=TRUE) %>%
   summarise_each(funs(mean), m:s) 

数据

set.seed(24)
m1 <- matrix(rnorm(10000*7), nrow=10000, dimnames = list(NULL, letters[13:19]))
set.seed(42)
m2 <- matrix(sample(letters[1:5], 10000*10, replace=TRUE), nrow=10000, 
         dimnames = list(NULL, letters[3:12]))
b <- cbind(as.data.frame(m2, stringsAsFactors=FALSE), m1)
b[3:5, 1:10] <- b[1, 1:10]