按 R 中的一组条件划分行

Dividing rows by a set of conditions in R

我正在将原始数据的最大似然值与修改后的数据集进行比较。对于修改后的数据集,我需要创建一个函数,在参数值超过特定值时将一行分成两行。例如,基础数据集如下所示:

Year ID Displacement
1999  A  38
1999  B  15
2001  B  19
2003  C  17

对于修改后的数据集,我想将第一行的 38 分成两行,每行 19。如下所示:

Year ID Displacement
1999  A  19
1999  A  19
1999  B  15
2001  B  19
2003  C  17

是这样的吗?

df2 <- df[with(df, c(rep(which(Displacement >= 38), 2), which(Displacement < 38))), ];
df2$Displacement[df2$Displacement >= 38] <- df2$Displacement[df2$Displacement >= 38] / 2;
#    Year ID Displacement
#1   1999  A           19
#1.1 1999  A           19
#2   1999  B           15
#3   2001  B           19
#4   2003  C           17

示例数据

df <- read.table(text =
    "Year ID Displacement
1999  A  38
1999  B  15
2001  B  19
2003  C  17", header = T)