r - 使用 dplyr 使用不同列的值向列名添加前缀
问题描述
“为列名添加前缀”有一个线程,但解决方案仅限于添加固定字符串作为前缀或后缀。是否可以将另一列的值作为前缀添加到列名?
例如,我有一个名为 的列sum
,另一个名为 、 和的列,具体取决于数据框time_period
。我希望像动态地创建新列。一个解决方案将是理想的,但不是必需的。year
month
year_sum
month_sum
dplyr
已经尝试过以下线程和相关线程: Add a prefix to column names
df <- tibble(sum = c(150, 175, 200), time_period = c('year', 'year', 'year')) %>%
rename_at(vars(sum), function(x) paste0(time_period, x)) %>%
glimpse()
我收到以下错误:
paste0(time_period,x)中的错误:找不到对象'time_period'
我期待该列sum
重命名为year_sum
.
解决方案
这是一个解决方法。它只查看第一行time_period
并获取它在那里找到的任何值:
df %>% {rename_at(., vars(sum), function(x) paste(pull(., time_period)[1], x, sep = "_"))}
# A tibble: 3 x 2
year_sum time_period
<dbl> <chr>
1 150 year
2 175 year
3 200 year
推荐阅读
- android - 如何对两个模型只使用一次数据快照?
- javascript - 更改页面后附加事件会发生什么?
- c++ - 将多个字符输出到 Windows 命令控制台中的同一位置而不覆盖
- javascript - 我可以根据单选按钮状态设置图像样式吗?
- python - 将用于解压缩 base64 编码位图图像的 Python 2.7 代码转换为 Python 3.7
- javascript - 未访问 index.js 的 console.log
- c# - 避免继承 JsonConverter 递归
- azureservicebus - 在 Azure 服务总线上记录主题和订阅消息活动
- python-3.x - 在没有 input[type="file=] 元素的情况下上传 selenium 文件
- java - 如何在回收站视图中显示更新和加载的文本?