【发布时间】:2021-09-28 08:09:03
【问题描述】:
使用 dplyr() lag() 函数,我发现了连续行之间“x”的差异。 对于在“x”中有 NA 的行,“diff”为 NA。对于下一个“差异”,NA 行似乎被排除在计算之外:
df %>%
mutate(diff = x - lag(x))
| date | x | diff |
|---|---|---|
| 2021-01-01 | 0 | 0 |
| 2021-01-02 | 10 | 10 |
| 2021-01-02 | 30 | 20 |
| 2021-01-03 | NA | NA |
| 2021-01-04 | 60 | 30 |
为了获得更完整的数据集,我假设在两个条目之间,当有 NA 条目时,“x”会线性增加。
所以,我想将 NA 行后面的“差异”除以 1 +“跳过”的 NA 行数。在此示例中,跳过了 1 个 NA 行,因此我想除以 30/2 并在 NA 行和下一行的 diff 列中输入 15,如下所示。
| date | x | diff |
|---|---|---|
| 2021-01-01 | 0 | 0 |
| 2021-01-02 | 10 | 10 |
| 2021-01-02 | 30 | 20 |
| 2021-01-03 | NA | 15 |
| 2021-01-04 | 60 | 15 |
【问题讨论】:
-
我得到一个不同的
diff列,其中包含“我的”dplyr-functions:c(NA, 10, 20, NA, NA)。