r - 使用 vars 函数重命名 dplyr 中的列时出现字符向量错误
问题描述
我正在尝试获取具有日期的财务数据并创建一个汇总表。这样做时,我将数据转换为宽格式,然后想要重命名生成的新列,否则它们将显示为日期。
我相信我在使用“rename_at”时为“vars”提供了一个字符向量,但它抛出了一个错误,我不知道为什么。我在这里找到了这个链接作为如何重命名多个列的示例重命名示例
所需的输出如下所示:
可重现的例子
library(tidyverse)
library(lubridate)
# data
my_dates <- as.Date(c("2018-05-25", "2018-08-25", "2018-11-25", "2018-05-25", "2018-08-25", "2018-11-25"))
item <- c("A","A","A","B","B","B")
value <- c(50:55)
df <- data.frame(my_dates, item, value)
# Dates will become column names and coerced as characters, so need way to refer to them
my_colnames <- as.character(sort(my_dates, decreasing = TRUE))
# New column names
new_colnames <- c("current", "3M_ago", "6M_ago")
# convert to wide format
df_wide <- df %>%
spread(key = my_dates, value) %>%
select(item, my_colnames) %>%
rename_at(vars(my_colnames) ~ new_colnames) # throws error here
在此先感谢您的帮助!
解决方案
我们需要,
在~
. 该~
部分类似于匿名函数调用而不是公式对象vars
library(tidyverse)
df %>%
spread(key = my_dates, value) %>%
select(item, my_colnames) %>%
rename_at(vars(my_colnames), ~ new_colnames)
# item current 3M_ago 6M_ago
#1 A 52 51 50
#2 B 55 54 53
推荐阅读
- java - 我的方法的最终结果不是我想要的结果
- python - 更改 numpy 字符串数组中的值
- python - 将日期/时间戳格式从 Excel 对象数据类型更改为 Pandas 数据框(字符串)
- c# - 将新列添加到数据表时出现 DBNull 错误
- python - 小python程序
- json - 批量解析json输出
- azure - 使用 Azure Web App,是否可以监控按 URL GET 参数分组的成本?
- typescript - 为什么下面的重写方法返回 Promise
> 未设置 responseType 参数时? - excel - 如何获取以某种颜色突出显示的单元格值
- python - Pandas 数据帧根据 groupby 随机打乱连续的值行