我想计算起始值和滞后结束值之间的比较 . 此比较应仅在某个组(起始值)内进行 . 如果此组中没有先前的“结束”值,则比较值应为NA .

这是我的数据:

library(dplyr)
dfData <- data.frame(
                    start = c(100, 239, 392, 700, 770), 
                    end = c(200, 390, 550, 760, 900),
                    group= c(1,1,2,3,3))

我首先使用dplyr尝试了这段代码,

dfData <- mutate(dfData, comparison = start - lag(end))

这导致了以下数据框:

<table><tbody><tr><th> </th><th>start</th><th>end</th><th>group</th><th>comparison</th></tr><tr><td>1</td><td>100</td><td>200</td><td>1</td><td>NA</td></tr><tr><td>2</td><td>239</td><td>390</td><td>1</td><td>39</td></tr><tr><td>3</td><td>392</td><td>550</td><td>2</td><td>2</td></tr><tr><td>4</td><td>700</td><td>760</td><td>3</td><td>150</td></tr><tr><td>5</td><td>770</td><td>900</td><td>3</td><td>10</td></tr></tbody></table>

这给了我所有值的标准滞后(不依赖于我的组状态) . 如何告诉R仅在我的组内执行延迟操作,而不是在组之间执行延迟操作?我不希望在从一个组跳到另一个组时计算滞后 .

这是我的预期结果:

<table><tbody><tr><th> </th><th>start</th><th>end</th><th>group</th><th>comparison</th></tr><tr><td>1</td><td>100</td><td>200</td><td>1</td><td>NA</td></tr><tr><td>2</td><td>239</td><td>390</td><td>1</td><td>39</td></tr><tr><td>3</td><td>392</td><td>550</td><td>2</td><td>NA</td></tr><tr><td>4</td><td>700</td><td>760</td><td>3</td><td>NA</td></tr><tr><td>5</td><td>770</td><td>900</td><td>3</td><td>10</td></tr></tbody></table>