我有以下数据框:
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)
)
我正在寻找通过rep by group函数复制
newcolumn
的输出(那里的time
变量用于订购)。换句话说,对于每个按时间排序的组,如何分配序列1,1,2,2,n,n
?我还需要一个通用的解决方案(在组的行数不同的情况下,或者我想重复3,10,n
次值)。例如,我可以使用以下命令生成该序列:
newcolumn=rep(1:3,each=2,times=2)
但这在
group1
具有不同行的group by语句中不起作用。 最佳答案
data.table
替代:
library(data.table)
DT <- as.data.table(a[1:2])
DT[order(time),newcolumn := rep(seq_len(.N/2), each=2, length.out=.N),by=c("group1")]
DT
# group1 time newcolumn
# 1: a 1 1
# 2: a 2 1
# 3: a 3 2
# 4: a 4 2
# 5: a 5 3
# 6: a 6 3
# 7: b 1 1
# 8: b 2 1
# 9: b 3 2
# 10: b 4 2
# 11: b 5 3
# 12: b 6 3
关于r - 按组重复序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53195658/