使csv数据导入不区分大小写

时间:2017-03-28 12:21:07

标签: r csv import case-sensitive

我意识到这是一个全新的一个(在我的情况下总是如此),但我正在尝试学习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”,但我无法使其成功。有什么提示吗?

2 个答案:

答案 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()以获得更好的效果。