有一个线程用于“向列名添加前缀”,但解决方案仅限于添加固定字符串作为前缀或后缀。是否可以将另一列的值作为前缀添加到列名中?
例如,我有一个名为sum的列,另一个列名为time_period,它的值为year和month,这取决于数据格式。我希望动态地创建像year_sum和month_sum这样的新列。dplyr解决方案是理想的,但不是必要的。
已经尝试了以下线程和相关线程:Adding 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。
发布于 2019-11-01 15:07:45
这里有一个变通的解决方案。它只查看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 https://stackoverflow.com/questions/58661403
复制相似问题