r - 按组重复序列
问题描述
我有以下数据框:
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 语句中不起作用。
解决方案
我们length.out
在rep
后面的分组中指定 'group1'
library(dplyr)
a %>%
group_by(group1) %>%
mutate(new = rep(seq_len(n()/2), each = 2, length.out = n()))
注意:each
并且times
不在同一个调用中使用。我们要么使用each
要么times
编辑:基于@r2evans 的评论
推荐阅读
- node.js - TypeError:无法读取未定义的属性“使用”
- jenkins-pipeline - 有没有办法在作业被取代时使用 try catch 语句?
- rider - Rider 代码完成窗口中的选定项目,未显示
- php - 在决定何时将项目拆分为微服务时需要考虑哪些因素?
- postgresql - PostgreSQL 触发执行过程或加入 NEW
- android - 为什么在切换到新主题后仍然使用 android:background 的值
- java - Android 连接到远程服务器上的数据库时出错
- java - 无法在 Cygwin 上找到有效的 Java 版本
- c# - Java.Lang.NoClassDefFoundError:超时获取异常详细信息 Xamarin Android
- ios - 如何将字典数组附加到另一个数组