【问题标题】:How to rename a column to a variable name "in a tidyverse way"如何“以整洁的方式”将列重命名为变量名
【发布时间】:2018-01-10 08:47:36
【问题描述】:

我创建了一个简单的数据框(下面是dput):

    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

但我想以tidyverse 的方式进行操作,以便可以在管道中使用它。我一直在修补replace_,但我只设法得到错误:

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

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    你会使用最新的 dplyr (>0.7.0)

    rename(df, !!metric:=value)
    

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

    【讨论】:

    猜你喜欢
    • 2021-08-15
    • 2019-04-29
    • 2019-02-28
    • 2017-10-23
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多