发现有关更改数据框中列名的几个问题,但没有回答我的问题。
我正在读取许多excel文件作为循环中的数据帧,对每个数据帧的数据进行一些分析并移动下一个数据帧。在每个数据框中,我需要重命名名称结尾的列,例如00010.列的位置在每个文件/数据框中都会发生变化。
e.g。导入的列名称包括:agency_id
,site_no
,datetime
,tz_cd
,11_00010
,11_00010_cd
,12_00030
,{{1 ,},
对于我的分析,我需要以下列:12_00030_md
,site_no
,datetime
,11_00010
。我需要将列12_00030
重命名为温度和列,将11_00010
重命名为盐度。如果它们的顺序相同,我可以使用12_00030
或rename
或plyr
中的colnames
轻松重命名列。但是,每个数据帧中列的顺序或顺序不相同,包含00010和00030的列可能以不同的数字开头,因此列名中的00010和00030的位置并不总是固定的。如果重命名会更容易。另外,我不需要名称中包含00010或00030但以cd或md等结尾的列
真的很感激。
答案 0 :(得分:1)
为什么不使用gsub
?
假设" x"作为您的列名(通常通过names(your-data-frame)
访问:
x <- c("agency_id", "site_no", "datetime", "tz_cd", "11_00010",
"11_00010_cd", "12_00030", "12_00030_md")
x <- gsub("11_00010", "temperature", x)
x <- gsub("12_00030", "salinity", x)
x
# [1] "agency_id" "site_no" "datetime" "tz_cd"
# [5] "temperature" "temperature_cd" "salinity" "salinity_md"
根据您的评论判断,或许您正在寻找更类似的内容:
x <- c("agency_id", "site_no", "datetime", "tz_cd", "11_00010",
"11_00010_cd", "12_00030", "12_00030_md")
x[grep("_00010$", x)] <- "temperature"
x[grep("_00030$", x)] <- "salinity"
x
# [1] "agency_id" "site_no" "datetime" "tz_cd"
# [5] "temperature" "11_00010_cd" "salinity" "12_00030_md"