我正在 R 中使用 dplyr(非常高兴),并且希望将 mpg 列的差速器设置为 mtcars 中的齿轮。然后第一行返回 NA (出于明显的原因)。我希望它保持原始值,而不是第一行不适用。
我正在寻找一种干净有效的方法来实现此目的(不使用 join 将第一行添加到微分值,因为我自己的数据集上的代码包含许多过滤器和分组变量)。
我的代码如下:
mtcars %>% mutate_at(vars(mpg:gear), funs(. - lag(., 1)))
Run Code Online (Sandbox Code Playgroud)
我希望第一行是 mtcars[1] ,其余行是差分
我们可以将default参数指定为0,否则为NA
library(dplyr)
mtcars %>%
mutate_at(vars(mpg:gear), list(~ . - lag(., default = 0)))
Run Code Online (Sandbox Code Playgroud)
或者另一种选择是diff连接第一个元素
mtcars %>%
mutate_at(vars(mpg:gear), list(~ c(first(.), diff(.))))
Run Code Online (Sandbox Code Playgroud)
注意:funs已被弃用。相反,我们正在使用list