我正在尝试纠正时间过程测量,其中正事件的触发失败,因此var2的间隔是数据集的中值的近似倍数。这是数据的一个子集。
var1 freq
1 0.9 1
2 2.7 3
3 0.9 1
4 1.8 2
5 0.9 1
6 0.9 1
7 1.8 2
8 2.7 3
要更正记录,我需要插入“freq”-1个额外的行,并用“var1”/“freq”计算的值填充它们。 我在这个网站上找到了以下示例(Exploding date range as row is R)
在其中定义了一个函数,它循环并检查“freq”变量以爆炸数据帧。但它正在检查时间变量,而我的变量是数字。
extendDF <- function(x) {
foo <- function(i, z) {
times <- z[i, "freq"]
out <- data.frame(seq(z[i, 1], by = "days", length = times),
rep(z[i, 2], times),
rep(z[i, 3], times))
names(out) <- names(z)
out
}
out <- lapply(seq_len(nrow(x)), FUN = foo, z = x)
do.call("rbind", out)
}