使用函数lag的mutate_at但保留第一行

时间:2019-05-20 13:49:26

标签: r dplyr mutate

我在R中使用dplyr(非常高兴),并希望获得mpg列的差异以适应mtcar。然后第一行返回NA(出于明显的原因)。我希望它保持原始值,而不是第一行是NA。

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

我的代码如下:

func(c echo.Context) (err error) {
  data := []byte(//the CSV formated data??)
    return c.Blob(http.StatusOK, "text/csv", data)
}

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

1 个答案:

答案 0 :(得分: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