我在 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/