R语言 如何将列重命名为变量名“以一种整洁的方式”

14ifxucb  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(84)

我创建了一个简单的数据框:

date      ticker     value
------------------------------
  2016-06-30  A2M.ASX   0.0686
  2016-07-29  A2M.ASX  -0.0134
  2016-08-31  A2M.ASX  -0.0650
  2016-09-30  A2M.ASX   0.0145
  2016-10-31  A2M.ASX   0.3600
  2016-11-30  A2M.ASX  -0.1429

我想将value列的名称更改为我的metric变量名中的任何名称,并且我想使用dplyr来完成。
我的示例数据:

df = structure(list(date = c("2016-06-30", "2016-07-29", "2016-08-31", "2016-09-30", "2016-10-31", "2016-11-30"), ticker = c("A2M.ASX", "A2M.ASX", "A2M.ASX", "A2M.ASX", "A2M.ASX", "A2M.ASX"), value = c(0.0686, -0.0134, -0.065, 0.0145, 0.36, -0.1429)), .Names = c("date", "ticker", "value"), row.names = c(NA, 6L), class = "data.frame")
metric = "next_return"

我知道怎么用一句话来表达:

colnames(df)[3] = metric

但是我想用一种整洁的方式来做,这样我就可以把它用在管子里了。我一直在修补replace_,但我只得到错误:

> dplyr::rename_(df, "ticker" = metric)
Error: `next_ret_1M` contains unknown variables
bmp9r5qi

bmp9r5qi1#

使用最新的dplyr(>0.7.0),您可以使用

rename(df, !!metric:=value)

语法是“new_name=old_name”,您需要使用:=!!将变量放在参数名的左侧。

yh2wf1be

yh2wf1be2#

更新dplyr >1.0.0

df %>% rename_with(~metric, value)

说明:

重命名可以在管道中使用rename_with执行,rename_with更通用,因此更强大。这个函数在最简单的形式下只会返回一个变量的值,这里是度量,作为一个匿名函数,即。function(x) return metric。后者可以用~ metric的简写形式表示。
这种语法更强大,因为如果使用存储在变量中的多个名称,它也同样有效。

相关问题