【发布时间】:2016-07-30 23:15:54
【问题描述】:
我正在尝试在我的数据框中选择一个变量子集,并重命名新数据框中的变量。我有大量需要重命名的变量。我正在使用
dplyr::select
dplyr::select_
由于我有许多要重命名的变量,我正在考虑是否应该使用字符串变量来重命名,但不确定是否可行?使用字符串可以帮助我管理新名称旧名称映射。这是一个例子
dplyr::select
library(dplyr)
library(nycflights13)
set.seed(123)
data <- sample_n(flights, 3)
select(data,yr=year,mon=month,deptime=dep_time)
问题是如何在字符串中传递这个参数,即 newvariable=oldvariable 参数,然后使用
dplyr::select_
col_vector <- c("year", "month", "dep_time")
select_(data, .dots = col_vector)
我想到的字符串是:
rename_vector <- c("yr=year","mon=month","deptime=dep_time")
任何建议都会非常有帮助。
【问题讨论】:
-
为什么不用
colnames(data) <- col_vector更改列名? -
真正的问题是如何在不手动构建的情况下自动生成
col_vector?然后,您必须提供一些有关如何重命名这些列的逻辑。 -
@Gopala 在我的情况下,我不必更改所有列名,只需更改其中的一个子集。此外,通过“新名称 = 旧名称”不仅可以使其可读,还可以确保直接 1-1 匹配。想想 50 个变量名。
-
您可以选择性地使用
names(mtcars)[c(1, 2, 3)] <- c('z', 'y', 'z')或使用名称names(mtcars)[names(mtcars) %in% c('x', 'y', 'z')] <- c('mpg', 'cyl', 'disp')重命名列。 -
如果您只想重命名一些变量但不是全部,这个答案可能很有用:stackoverflow.com/a/44143688/3871924