r - 在 R 中有效地使用多个函数进行变异
问题描述
我使用 mutate 在我的数据框中添加新变量。下面的代码是一个示例,在我的真实数据中,我需要更改lag1
为lag100
和lag01
to lag0100
。我不想一个一个地输入这些。
有没有一种有效的方法来做到这一点?
c <- mtcars %>% mutate_all( .funs = list(lag1 = ~lag(., 1),
lag2 = ~lag(., 2),
lag3 = ~lag(., 3),
lag4 = ~lag(., 4),
lag5 = ~lag(., 5),
lag6 = ~lag(., 6),
lag01 = ~rollmean(., 2, fill = NA, align = 'right'),
lag02 = ~rollmean(., 3, fill = NA, align = 'right'),
lag03 = ~rollmean(., 4, fill = NA, align = 'right'),
lag04 = ~rollmean(., 5, fill = NA, align = 'right'),
lag05 = ~rollmean(., 6, fill = NA, align = 'right'),
lag06 = ~rollmean(., 7, fill = NA, align = 'right')
))
任何帮助将不胜感激!
解决方案
您可以across
在新的dplyr
1.0.0 中使用将多个函数应用于所有列。 rollmean
withalign = 'right
与 using 相同rollmeanr
。.names
您可以使用规范分配相关名称。
library(dplyr)
library(purrr)
library(zoo)
x <- 5
map_dfc(1:x, function(i) mtcars %>%
transmute(across(.fns = list(lag = ~lag(., i),
mean = ~rollmeanr(., i + 1, fill = NA)),
.names = paste0('{col}_{fn}_', i))))
推荐阅读
- linux - yocto 中图像版本控制的最佳方法
- java - 如何更改 Android 中不同环境(开发和产品)的硬编码 url 常量?
- javascript - 在对象数组中添加数据
- redirect - Scrapy 重定向始终为 200
- nativescript - nativescript-background-http 问题
- python - 金字塔服务器上的 CORS
- asp.net-core - 用于收集嵌套对象的 ASP .Net Core Http [GET]
- kotlin - 访问已声明对象类型的子类的属性
- google-cloud-platform - 如何在 GCP 上授予对单个计算实例的访问权限?
- c++ - 比较两个节点坐标的最佳方法是什么?