首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr使用不同列的值向列名添加前缀

使用dplyr使用不同列的值向列名添加前缀
EN

Stack Overflow用户
提问于 2019-11-01 15:00:06
回答 1查看 182关注 0票数 1

有一个线程用于“向列名添加前缀”,但解决方案仅限于添加固定字符串作为前缀或后缀。是否可以将另一列的值作为前缀添加到列名中?

例如,我有一个名为sum的列,另一个列名为time_period,它的值为yearmonth,这取决于数据格式。我希望动态地创建像year_summonth_sum这样的新列。dplyr解决方案是理想的,但不是必要的。

已经尝试了以下线程和相关线程:Adding a prefix to column names

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-01 15:07:45

这里有一个变通的解决方案。它只查看time_period的第一行,并获取它在那里找到的任何值:

代码语言:javascript
复制
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 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58661403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档