r - mutate_at 使用函数滞后但保留第一行

标签 r dplyr

我在 R 中使用 dplyr(非常高兴)并希望将 mpg 列的差异与 mtcars 中的齿轮相匹配。第一行然后返回 NA (出于明显的原因)。我希望它保持原始值,而不是第一行是 NA。

我正在寻找一种干净有效的方法来实现这一点(不使用 join 将第一行添加到差分值,因为我自己数据集上的代码包含许多过滤器和分组变量)。

我的代码如下:

mtcars %>% mutate_at(vars(mpg:gear), funs(. - lag(., 1)))

我希望第一行是 mtcars[1],其余的是差异

最佳答案

我们可以指定 default参数为0,否则为NA

library(dplyr)
mtcars %>%
   mutate_at(vars(mpg:gear), list(~ . - lag(., default = 0)))

或者另一个选项是 diff连接第一个元素
mtcars %>%
    mutate_at(vars(mpg:gear), list(~ c(first(.), diff(.))))

注意:funs正在被弃用。而不是我们使用 list

关于r - mutate_at 使用函数滞后但保留第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56222339/

相关文章:

r - 获取 system.time 或使用管道复制工作 %>%

r - 有条件地更改 dplyr 中变量的值。无法让 `replace()` 工作

r - R中的掩蔽方法

javascript - Shiny 的 R : Change border color of selectInput

删除空列表列

r - 如何从参数值的 DataFrame 动态创建正式参数 (R)

r - 计算三列之间的最小差异并给出相应的值

r - 使用 tidyverse 按组和整体获取摘要

将 N/A 替换为 data.table 中的其他值会返回错误

python - 如何使用 python 或 R 将三个字母的氨基酸代码转换为一个字母的代码?