R:重命名多个变量

R: Renaming Multiple Variables

我正在使用 R 编程语言。我试图通过在每个变量的末尾添加“_a”来重命名数据框中的所有变量。我想出了如何使用“dplyr”库(用于全局环境中的数据帧)来做到这一点:

library(dplyr)
library(dbplyr)

var1 = rnorm(100,10,10)
var2 = rnorm(100,10,10)
var3 = rnorm(100,10,10)

my_data = data.frame(var1,var2,var3)

df = my_data %>% rename_all(paste0, "_a")

问题: 我的实际数据框在我使用“RODBC SQL”命令访问的数据库上,例如:

library(RODBC)
library(sqldf)

con = odbcConnect("some name", uid = "some id", pwd = "abc")

sample_query = sqlQuery(con, "select distinct * from df")

到目前为止我尝试了什么: 使用“dbplyr”库,我“提取”了上面执行的 SQL 代码:

 con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")

df <- copy_to(con, my_data)

final =  df %>% 
 rename_all(paste0, "_a")  %>% show_query()

#results

<SQL>
SELECT `var1` AS `var1_a`, `var2` AS `var2_a`, `var3` AS `var3_a`
FROM `my_data`

我的问题: 我正在使用的实际 table ("my_data") 包含许多列并且在数据库中。我想重命名所有列(例如,在每列的末尾添加“_a”),但我不能这样做,直到我弄清楚如何通过 SQL 语句传递 sqlQuery() 。这意味着我无法一次获取所有列的完整列表并一次重命名它们。

我可以手动执行此操作,例如

sample_query = sqlQuery(con, "SELECT `var1` AS `var1_a`, `var2` AS `var2_a`, `var3` AS `var3_a` etc etc etc `varfinal` AS `varfinal_a`
    FROM `my_data` ")

但我正在寻找一种自动执行此操作的方法。

这样写可以吗?

#not sure if this is correct
 sample_query = sqlQuery(con, "rename_all(paste0, "_a")") 

谢谢!

可能有更好的选择,但您可以按如下方式构建查询字符串:

query <- paste(
  "SELECT",
  paste(
    names(my_data),
    "AS",
    paste0(names(my_data), "_a"),
    collapse = ", "
  ),
  "FROM my_data"
)

那么query会给你:

[1] "SELECT var1 AS var1_a, var2 AS var2_a, var3 AS var3_a FROM my_data"
  

可以在你的sqlQuery语句中使用:

sample_query = sqlQuery(con, query)