我意识到这是一个全新的一个(在我的情况下总是如此),但我正在尝试学习R,我需要导入数百个具有相同结构的csv文件,但在某些列名中是大写的,有些是小写的。
所以我(现在)
year zip income
2010 1111 5000
2011 1111 5500
2012 1111 6000
2013 1111 6500
2014 1111 7000
2015 1111 7614
2016 1111 8282
2017 1111 9009
2010 2222 5000
2011 2222 6000
2012 2222 7000
2013 2222 8000
2014 2222 9000
2015 2222 10424
2016 2222 12074
2017 2222 13986
但由于案例较小,我收到错误。我试图申请“tolower”,但我无法使其成功。有什么提示吗?
答案 0 :(得分:1)
在读取.csv文件后,您可能希望使用
将列名转换为全部大写flow0300 <- read.csv(fileName, header = T, sep = ";", colClasses = "character")
colnames(flow0300) <- toupper(colnames(flow0300))
flow0300 <- flow0300[, c("CODE", "CLASS", "NAME")]
编辑:使用@xraynaud输入的扩展解决方案。
答案 1 :(得分:1)
这里的问题不在于读取CSV文件,而在于尝试使用“小写”数据框中实际不存在的列名进行索引。
您可以使用grep()
ignore.case = TRUE
来索引所需的列。
tmp <- read.csv(fileName, header = T, sep = ";",
colClasses = "character")
ind <- grep(patt = "code|class|name", x = colnames(tmp),
ignore.case = TRUE)
tmp[, ind]
您可能需要查看readr::read_csv2()
甚至data.table::fread()
以获得更好的效果。