gpt4 book ai didi

r - 如何根据 dplyr 管道中另一列的第一行的值重命名列

转载 作者:行者123 更新时间:2023-12-01 12:04:53 24 4
gpt4 key购买 nike

我有一长串不同的过滤和选择函数,在同一个管道操作中,我想根据另一列第一行的值重命名一列。我必须为许多不同的数据框执行此操作,因此与数据框名称无关的管道会很好。

这是一个小例子:

original <- tibble(value = c(1,2,4,6,7), month = 1:5, year = 2018)
what_I_want <- tibble(indicator2018 = c(1,2,4,6,7), month = 1:5, year = 2018)

因此,如果 year 列的第一行是 2015,则 value 的列名称将更改为 indicator2015

这行不通:

original %>%
rename(paste0("indicator", .$year[1]) = "value")

original %>%
rename_at(vars(starts_with("value")), list( ~ str_replace(., "value", paste0("indicator", .["year"][1]))))

这可行,但涉及破坏管道,并且(更重要的是)需要管道中数据框的名称,因此在不手动更改代码的情况下无法扩展到许多不同的数据框。

original2 <- original %>%
rename_at(vars(starts_with("value")), list( ~ str_replace(., "value", paste0("indicator", original$year[1]))))

最佳答案

您需要取消引用。这有效:

original %>% 
rename(!!paste0("indicator", .$year[1]) := "value")

为了将来引用,我建议您查看“使用 dplyr 编程” 插图 (https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html)。

关于r - 如何根据 dplyr 管道中另一列的第一行的值重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58589632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com