R 使用字典重命名多个colname
我有多个csv,包括多个信息(如“年龄”),同一变量有不同的拼写。为了使它们标准化,我计划阅读它们中的每一个,并将它们转换成一个数据帧,用于标准化,然后写回csv 因此,我创建了一个如下所示的词典: 我正在努力找到一种在R中实现以下目标的方法:R 使用字典重命名多个colname,r,dictionary,rename,R,Dictionary,Rename,我有多个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您是否尝试了?匹配以获得要更改的列名?提出一个人们可以帮助解决的问题。这包括一个数据样本、所有必要的代码,以及对您正在尝试做什么和没有做什么的清晰解释。