gpt4 book ai didi

rename_if() 和 starts_with() 为某些列添加前缀

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

这个问题在这里已经有了答案:





Rename columns using `starts_with()` where new prefix is a string

(1 个回答)



rename column names dynamically in dplyr chain [duplicate]

(1 个回答)


2年前关闭。




我的数据如下所示:

#>           Artist          Album Year
#> 1 Beatles Sgt. Pepper's 1967
#> 2 Rolling Stones Sticky Fingers 1971

我的问题应该很简单。我正在尝试使用 rename_if仅以字母“A”开头的列作为前缀。所以我想要的输出是:
#>       df1_Artist      df1_Album Year
#> 1 Beatles Sgt. Pepper's 1967
#> 2 Rolling Stones Sticky Fingers 1971

您可以看到不应以“年份”为前缀。

这是我的尝试,但效果不佳。我在用 starts_with不正确?我应该试着把它分成两行,这样我才能更清楚地理解它吗?我还在学习 purrr 风格的函数,所以它对我来说并不总是很直观。
df1 %>% rename_if(starts_with("A"), .funs = ~ paste0(df1, .))
#> Error in df1 %>% rename_if(starts_with("A"), .funs = ~paste0(df1, .)): could not find function "%>%"

数据输入代码:
df1 <- data.frame(stringsAsFactors=FALSE,
Artist = c("Beatles", "Rolling Stones"),
Album = c("Sgt. Pepper's", "Sticky Fingers"),
Year = c(1967, 1971)
)

最佳答案

rename_if期望一个逻辑向量作为谓词函数。 starts_with根据名称选择变量。使用底座 startsWith相反,它返回基于前缀的逻辑向量

library(dplyr)
df1 %>% rename_if(startsWith(names(.), "A"), ~paste0("df1_", .))

# df1_Artist df1_Album Year
#1 Beatles Sgt. Pepper's 1967
#2 Rolling Stones Sticky Fingers 1971

或者如果你想留在 tidyverse您也可以使用 str_detect
df1 %>% rename_if(stringr::str_detect(names(.), "^A"), ~paste0("df1_", .))

使用 starts_with我们可以使用 rename_at其中有 vars争论。
df1 %>% rename_at(vars(starts_with("A")), ~paste0("df1_", .))

关于rename_if() 和 starts_with() 为某些列添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56696131/

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