【发布时间】:2019-12-23 04:39:43
【问题描述】:
我是 Stackoverflow 的新手,对 R 也很陌生。非常感谢您的帮助。
我正在使用dplyr 的mutate() 函数根据一个初始列创建一组新列。对于要创建的先验已知数量的列,一切正常。
但是,在我的应用程序中,要创建的新列的数量是未知的(或者在运行代码之前确定为输入参数)。
为了说明,请考虑以下最小的工作示例:
library(RSQLite)
library(dplyr)
library(dbplyr)
library(DBI)
con <- DBI::dbConnect(RSQLite::SQLite(), path = ":memory:")
copy_to(con, mtcars, "mtcars", temporary = FALSE)
db <- tbl(con, "mtcars") %>%
select(carb) %>%
distinct(carb) %>%
arrange(carb) %>%
mutate(carb1 = carb + 1) %>%
mutate(carb2 = carb + 2) %>%
mutate(carb3 = carb + 3) %>%
show_query() %>%
collect()
在本例中,我创建了三个新变量。但是,我希望程序能够处理动态数量的变量(例如,五个或十个新变量)。我也想做collect()之前的所有计算,因为我想尽可能晚地将数据复制到内存中。
我的实际应用程序的一些背景:我想使用DB2's function ADD_MONTHS()。所以我需要dplyr/dbplyr 将该函数直接刷新到 SQL 命令中。因此,我需要一个实际上不使用数据帧逻辑的解决方案 - 我需要该解决方案位于 dplyr。
从不同的角度来看:在 SAS 中,我会使用宏处理器来动态构建 proc sql 语句。 R中是否有等价物?
【问题讨论】: