使用dplyr :: mutate将函数的参数化应用到单个数据框列,然后将结果保存到新列?

cho鱼

假设我有一个看起来像这样的数据框:

user_id  date          weight
12345    2016-03-07    160
12345    2016-03-06    158
12345    2016-03-05    156
12345    2016-03-04    154

我想通过对weight应用多个功能来更改此数据框,然后将每个应用程序的结果保存到新列。一个警告是此函数已参数化,我想将参数值附加到新的列名。例如,如果我使用lag()

user_id  date          weight    dweight_1    dweight_2    ...
12345    2016-03-07    160       NA           NA   
12345    2016-03-06    158       160          NA
12345    2016-03-05    156       158          160
12345    2016-03-04    154       156          158

第一个新列是的结果lag(weight, 1),第二个是的结果lag(weight, 2),依此类推。

我尝试遵循dplyr插图中针对该主题提出的标准评估方法以及该SO问题的建议,但似乎都无法解决参数化函数的问题(否则我将只使用funs()!)。

我该如何解决这个问题?

利斯特尔

要以编程方式添加dplyr,您可以使用类似

x <- 2
mutate_(df, .dots = setNames(list(~lag(weight, x)), paste0('dweight_', x)))

如果只是几次(如果愿意,甚至可以将它们链接在一起),您可以重复一遍,但是如果您经常这样做,那么编写一个函数可能很有意义:

dweight <- function(l = 1){
  for (i in l){
    df <- mutate_(df, .dots = setNames(list(~lag(weight, i)), paste0('dweight_', i)))
  }
  df
}

您可以传递一个向量:

> dweight(1:4)
  user_id       date weight dweight_1 dweight_2 dweight_3 dweight_4
1   12345 2016-03-07    160        NA        NA        NA        NA
2   12345 2016-03-06    158       160        NA        NA        NA
3   12345 2016-03-05    156       158       160        NA        NA
4   12345 2016-03-04    154       156       158       160        NA

您可以根据需要编辑该函数:添加数据框参数,以便可以对其进行链接,使用*apply代替for,添加参数以传递函数等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用dplyr :: mutate将函数的参数化应用到单个数据框列,然后将结果保存到新列?

来自分类Dev

使用“应用”将函数应用到参数是特定于列的矩阵

来自分类Dev

使用dplyr :: mutate(across())将多列应用于自定义函数

来自分类Dev

使用dplyr将汇总列添加到数据框

来自分类Dev

使用管道将dplyr函数应用于列表中的单个列

来自分类Dev

使用dplyr选择列

来自分类Dev

使用dplyr连接列

来自分类Dev

为什么我不能应用函数使用dplyr使用mutate()创建新列?

来自分类Dev

在数据框列上应用模糊匹配,然后将结果保存到新列中

来自分类Dev

使用dplyr提取数据

来自分类Dev

使用dplyr的mutate()函数在sum()函数中使用列

来自分类Dev

使用lapply将单个数据框列转换为数据框列表中的数字

来自分类Dev

使用dplyr过滤数据框

来自分类Dev

无法使用dplyr mutate添加列

来自分类Dev

在 dplyr 的 mutate 中使用散列键值对

来自分类Dev

使用dplyr获取列的值

来自分类Dev

在dplyr中使用列号

来自分类Dev

使用Dplyr添加比例列

来自分类Dev

使用R / dplyr过滤列?

来自分类Dev

使用 dplyr 动态访问列

来自分类Dev

在dplyr :: mutate中使用条件

来自分类Dev

使用 mutate 创建一个新列,它是数据框 (dplyr) 中每一行的一组指定列的内容的函数

来自分类Dev

使用dplyr(或其他方式)将包含列表的数据框列拆分为多个列

来自分类Dev

使用dplyr通过将列值分组为单独的列来旋转数据框

来自分类Dev

在dplyr mutate_at调用中使用多列函数

来自分类Dev

在函数中使用dplyr :: filter()

来自分类Dev

汇总使用dplyr跨()函数

来自分类Dev

在dplyr中使用跨函数

来自分类Dev

为什么我不能使用dplyr使用mutate()创建新列的函数?

Related 相关文章

  1. 1

    使用dplyr :: mutate将函数的参数化应用到单个数据框列,然后将结果保存到新列?

  2. 2

    使用“应用”将函数应用到参数是特定于列的矩阵

  3. 3

    使用dplyr :: mutate(across())将多列应用于自定义函数

  4. 4

    使用dplyr将汇总列添加到数据框

  5. 5

    使用管道将dplyr函数应用于列表中的单个列

  6. 6

    使用dplyr选择列

  7. 7

    使用dplyr连接列

  8. 8

    为什么我不能应用函数使用dplyr使用mutate()创建新列?

  9. 9

    在数据框列上应用模糊匹配,然后将结果保存到新列中

  10. 10

    使用dplyr提取数据

  11. 11

    使用dplyr的mutate()函数在sum()函数中使用列

  12. 12

    使用lapply将单个数据框列转换为数据框列表中的数字

  13. 13

    使用dplyr过滤数据框

  14. 14

    无法使用dplyr mutate添加列

  15. 15

    在 dplyr 的 mutate 中使用散列键值对

  16. 16

    使用dplyr获取列的值

  17. 17

    在dplyr中使用列号

  18. 18

    使用Dplyr添加比例列

  19. 19

    使用R / dplyr过滤列?

  20. 20

    使用 dplyr 动态访问列

  21. 21

    在dplyr :: mutate中使用条件

  22. 22

    使用 mutate 创建一个新列,它是数据框 (dplyr) 中每一行的一组指定列的内容的函数

  23. 23

    使用dplyr(或其他方式)将包含列表的数据框列拆分为多个列

  24. 24

    使用dplyr通过将列值分组为单独的列来旋转数据框

  25. 25

    在dplyr mutate_at调用中使用多列函数

  26. 26

    在函数中使用dplyr :: filter()

  27. 27

    汇总使用dplyr跨()函数

  28. 28

    在dplyr中使用跨函数

  29. 29

    为什么我不能使用dplyr使用mutate()创建新列的函数?

热门标签

归档