R(dplyr):组内的滞后值

时间:2017-07-09 18:35:22

标签: r dplyr lag mutate

我想计算起始值和滞后结束值之间的比较。此比较应仅在某个组(起始值)内进行。如果之前没有"结束"该组中的值,比较值应为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))

导致以下数据框:

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

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

这是我的预期结果:

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

0 个答案:

没有答案