R 使用字典重命名多个colname

R 使用字典重命名多个colname,r,dictionary,rename,R,Dictionary,Rename,我有多个csv,包括多个信息(如“年龄”),同一变量有不同的拼写。为了使它们标准化,我计划阅读它们中的每一个,并将它们转换成一个数据帧,用于标准化,然后写回csv 因此,我创建了一个如下所示的词典: 我正在努力找到一种在R中实现以下目标的方法: 要求它查看数据框的每个colname,并将每个colname与字典数据框中的每个“old_name”进行比较 如果找到了匹配项,则将“旧名称”替换为“新名称” 任何帮助都会非常有用 编辑:问题不仅仅是大写和小写。例如,在某些情况下,它可能是“年”而不是

我有多个csv,包括多个信息(如“年龄”),同一变量有不同的拼写。为了使它们标准化,我计划阅读它们中的每一个,并将它们转换成一个数据帧,用于标准化,然后写回csv

因此,我创建了一个如下所示的词典:

我正在努力找到一种在R中实现以下目标的方法:

  • 要求它查看数据框的每个colname,并将每个colname与字典数据框中的每个“old_name”进行比较
  • 如果找到了匹配项,则将“旧名称”替换为“新名称”
  • 任何帮助都会非常有用


    编辑:问题不仅仅是大写和小写。例如,在某些情况下,它可能是“年”而不是“年龄”。

    这里有一个快速而肮脏的方法。我编写了一个函数,这样您就可以更改参数并快速遍历所有文件。使用
    stringi
    包是可选的——我使用它来检查提供的.csv文件名,但是如果您认为不必要,可以删除它

    library(stringi)
    
    dict <- data.frame(path=c('../csv1','../csv1','../csv2','../csv3','../csv3'),
                             old_name=c('Age','agE','Name','years','NamE'),
                             new_name=c('age','age','name','age','name'))
    
    example_csv <- data.frame(Age=c(43,34,42,24),NamE=c('Michael','Jim','Dwight','Kevin'))
    
    
    standardizeColumnNames <- function(df,csvFileName,dictionary){
      colHeaders <- character(ncol(df))
      for(i in 1:ncol(df)){
        index <- which(dictionary$old_name == names(df)[i])
        if(length(index) > 0){
          colHeaders[i] <- as.character(dictionary$new_name[index[1]])
        } else {
          colHeaders[i] <- names(df)[i]
        }
      }
      names(df) <- colHeaders
    
      if(stri_sub(csvFileName,-4) != '.csv'){
        csvFileName <- paste0(csvFileName,'.csv')
      }
      write.csv(df,csvFileName)
    }
    
    standardizeColumnNames(example_csv,'test_file_name',dict)
    
    库(stringi)
    
    dict您是否尝试了
    ?匹配
    以获得要更改的列名?提出一个人们可以帮助解决的问题。这包括一个数据样本、所有必要的代码,以及对您正在尝试做什么和没有做什么的清晰解释。