gpt4 book ai didi

基于向量 new_varname、old_varname 重命名 dplyr 中的变量名称

转载 作者:行者123 更新时间:2023-12-04 11:27:34 28 4
gpt4 key购买 nike

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





Rename multiple columns by names

(18 个回答)


去年关闭。




有没有一种方法“dplyr 方式”可以根据变量名称转换器 (vt) 重命名 data.frame 中的变量子集,data.frame 包含具有旧变量名称和新变量名称(分别为 old_varname 和 new_varname)的列。
例如:

d <- iris
vt <- data.frame(old_varname=c('Sepal.Length','Petal.Length'),
new_varname=c('a','b'))
d <- d %>% rename_( .... )
#In base R code, this would be:
names(d)[names(d) %in% vt$old_varname] <- vt$std_varname

编辑:
进一步澄清:
  • 假设要翻译的变量向量很长,那么手写新旧名称对是不可行的
  • 要重命名的变量是总变量的一个子集,我还想保留所有变量
  • 最佳答案

    尝试这个:

    d <- iris
    vt <- data.frame(old_varname=c('Sepal.Length','Petal.Length'),
    new_varname=c('a','b'), stringsAsFactors = F)
    d.out <- d %>% rename_(.dots = setNames(vt$old_varname, vt$new_varname))

    head(d.out)
    a Sepal.Width b Petal.Width Species
    1 5.1 3.5 1.4 0.2 setosa
    2 4.9 3.0 1.4 0.2 setosa
    3 4.7 3.2 1.3 0.2 setosa
    4 4.6 3.1 1.5 0.2 setosa
    5 5.0 3.6 1.4 0.2 setosa
    6 5.4 3.9 1.7 0.4 setosa

    请注意 setNames 的第一个参数不能接受 factor ,所以我修改了 vt通过添加 stringsAsFactors = F .

    关于基于向量 new_varname、old_varname 重命名 dplyr 中的变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597736/

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