我有大量数据集,每个数据集都包含一长串列名。在某些文件中,列名称全部大写,而在某些文件中,仅列名称的第一个字母大写。我需要附加数据集,并认为匹配数据集中的列名称的最简单方法是将全大写名称转换为仅第一个字母大写的名称。
我希望找到一个通用的解决方案,甚至可能是一句俏话。
这是我的示例数据集。所需的名称包含在names
声明。
my.data2 <- "
landuse units grade CLAY LINCOLN BASINANDRANGE MCCARTNEY MAPLE
apple acres AAA 0 2 3 4 6
apple acres AA 1000 900 NA NA 700
pear acres AA 10.0 20 NA 30.0 40
peach acres AAA 500 400 350 300 200
"
my.data2 <- read.table(textConnection(my.data2), header=TRUE)
names(my.data2)[names(my.data2)=="CLAY"] <- "Clay"
names(my.data2)[names(my.data2)=="BASINANDRANGE"] <- "BasinandRange"
names(my.data2)[names(my.data2)=="LINCOLN"] <- "Lincoln"
names(my.data2)[names(my.data2)=="MCCARTNEY"] <- "McCartney"
names(my.data2)[names(my.data2)=="MAPLE"] <- "Maple"
my.data2
请注意,我包含了名字McCartney
and BasinandRange
让事情变得更现实、更困难。但是,如果我能找到一个单行代码来处理 95% 的名称并使用上面的names
处理复杂情况的语句,例如McCartney
and BasinandRange
那太好了。
我搜索了互联网,包括 StackOverflow 档案,但没有找到解决方案。抱歉,如果我忽略了一个。感谢您的任何帮助。
这是我能想到的一个实现“在数据集中匹配列名称的最简单方法”的单行代码:
## Columns 1:3 left unaltered since they are not place names.
names(my.data2)[-1:-3] <- tolower(names(my.data2)[-1:-3])
## View the results
names(my.data2)
# [1] "landuse" "units" "grade" "clay"
# [5] "lincoln" "basinandrange" "mccartney" "maple"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)