首页 > 解决方案 > 按组重复序列

问题描述

我有以下数据框:

a <-  data.frame(
  group1=factor(rep(c("a","b"),each=6,times=1)),
  time=rep(1:6,each=1,times=2),
  newcolumn = c(1,1,2,2,3,3,1,1,2,2,3,3)
)

我希望newcolumn通过组函数复制一个代表的输出(该time变量用于排序目的)。换句话说,对于按时间排序的每个组,我如何分配一个序列1,1,2,2,n,n?我还需要一个通用解决方案(如果组的行数不同,或者我想重复值3,10,n次)。

例如,我可以使用以下命令生成该序列: newcolumn=rep(1:3,each=2,times=2)

group1但这在具有不同行的 group by 语句中不起作用。

标签: r

解决方案


我们length.outrep后面的分组中指定 'group1'

library(dplyr)
a %>% 
  group_by(group1) %>% 
  mutate(new = rep(seq_len(n()/2), each = 2, length.out = n()))

注意:each并且times不在同一个调用中使用。我们要么使用each要么times

编辑:基于@r2evans 的评论


推荐阅读