这是一个非常基本的问题,但这让我烦恼,所以我问.
我需要一系列重复的数字,即1 1 ... 1 2 2 ... 2 3 3 ... 3等.我实现这个的方式是
nyear<-20
names<-c(rep(1,nyear),rep(2,nyear),rep(3,nyear),rep(4,nyear),
rep(5,nyear),rep(6,nyear),rep(7,nyear),rep(8,nyear))
Run Code Online (Sandbox Code Playgroud)
哪个有效,但很笨拙,显然不能很好地扩展.如何按顺序重复N次整数M次?我尝试嵌套seq()和rep(),但这并不是我想要的.我显然可以写一个for循环来做它,但这看起来也很笨拙 - 应该有一个内在的方法来做到这一点!
我有一个非常大的数据帧(265,874 x 30),有三个明智的组:年龄类别(1-6),日期(5479这样)和地理位置(总共4个).每条记录包括每个记录中的一个选项,以及27个计数变量.我想按每个分组变量进行分组,然后对得到的子分组27个变量进行colSums.我一直在尝试使用dplyr(v0.2)来做这件事,因为手动执行它最终会设置很多冗余的东西(或者通过循环来迭代分组选项,因为缺乏优雅的解决方案) .
示例代码:
countData <- sample(0:10, 2000, replace = TRUE)
dates <- sample(seq(as.Date("2010/1/1"), as.Date("2010/01/30"), "days"), 200, replace = TRUE)
locality <- sample(1:2, 2000, replace = TRUE)
ageCat <- sample(1:2, 2000, replace = TRUE)
sampleDF <- data.frame(dates, locality, ageCat, matrix(countData, nrow = 200, ncol = 10))
Run Code Online (Sandbox Code Playgroud)
然后我想做的是......
library("dplyr")
sampleDF %.% group_by(locality, ageCat, dates) %.% do(colSums(.[, -(1:3)]))
Run Code Online (Sandbox Code Playgroud)
但这并不常用,因为colSums()的结果不是数据帧.如果我施展它,它的工作原理:
sampleDF %.% group_by(locality, ageCat, dates) %.% do(data.frame(matrix(colSums(.[, -(1:3)]), nrow = 1, ncol = 10)))
Run Code Online (Sandbox Code Playgroud)
但最后的做(...)位看起来非常笨重.
关于如何更优雅或有效地做到这一点的任何想法?我想这个问题归结为:如何最好地使用do()函数和.运算符通过colSums汇总数据框.
注意:do(.)运算符仅适用于dplyr 0.2,因此您需要从GitHub( …