gpt4 book ai didi

重命名包含特定字符串的所有变量并添加序列号

转载 作者:行者123 更新时间:2023-12-04 22:54:27 26 4
gpt4 key购买 nike

假设我有一个名称非常奇怪的数据集,我想修改/替换变量名称字符串的一部分,并添加一个逻辑序列。下面的代码工作得很好,因为它用“var”替换了“nameverybig”。

    library(tidyverse)
ds <- data.frame(identification = 1:10,
nameverybig_do_you_like_cookies = c(1:10),
nameverybig_have_you_been_in_europe = c(1:10),
nameverybig_whats_your_gender = c(1:10))


ds <- ds %>%
rename_all(.,~sub("nameverybig_*",
paste("var"),
names(ds)))

但是我在重命名字符串和添加逻辑序列的过程中苦苦挣扎。
ds %>% names
dados <- ds %>%
rename_all(.,~sub("nameverybig_*",
paste("var", 1:3),
names(ds)))

我想留在 tidyverse 框架内。我试过 rename_all + contains 和matches,以及 rename_at ,但没​​有成功。我将此代码基于其他帖子,例如 this onethis one
这篇文章有一个可重现的代码。如果我需要提高问题的质量,请告诉我。
谢谢你。

最佳答案

更新
dplyr 1.0.0 开始,您可以使用 rename_with
您可以选择要按位置重命名的列

library(dplyr)
ds %>% rename_with(~paste0("var", seq_along(.), sub("nameverybig_*", "_", .)), -1)
或按名称
ds %>% rename_with(~paste0("var", seq_along(.), sub("nameverybig_*", "_", .)), 
starts_with('nameverybig'))
两者都返回:
#   identification var1_do_you_like_cookies var2_have_you_been_in_europe var3_whats_your_gender
#1 1 1 1 1
#2 2 2 2 2
#3 3 3 3 3
#4 4 4 4 4
#5 5 5 5 5
#6 6 6 6 6
#7 7 7 7 7
#8 8 8 8 8
#9 9 9 9 9
#10 10 10 10 10

旧答案
您可以将 paste0sub 一起使用
ds %>% rename_all(~paste0("var", seq_along(.), sub("nameverybig_*", "_", .)))
要仅重命名特定变量,我们可以使用 rename_at
ds %>% rename_at(vars(starts_with("nameverybig")), 
~paste0("var", seq_along(.), sub("nameverybig_*", "_", .)))

关于重命名包含特定字符串的所有变量并添加序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57609974/

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