我有很多变量要分组并产生平均值。我已经给出了下面的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))
答案 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]