使用sqldf中的read.csv.sql读取某些列(如果存在)

时间:2018-07-16 18:30:51

标签: sql r sqldf

我的csv文件非常大(2.3 GB)。我只想阅读可能存在或不存在的某些列。

我正在使用以下建议的代码 Only read limited number of columns

library(sqldf) 
loc <- read.csv.sql("data.csv",
                    sql = "select locID, City, CRESTA, Latitude, Longitude from file",
                    sep = ",")

例如在“ csv”中没有“城市”列时,该如何处理?

1 个答案:

答案 0 :(得分:0)

这将找出可用的列,将其名称与所需列的名称相交,然后仅读取这些列。

library(sqldf)

nms_wanted <- c("locID", "City", "CRESTA", "Latitude", "Longitude")
nms_avail <- names(read.csv("data.csv", nrows = 0))
nms <- intersect(nms_avail, nms_wanted)
fn$read.csv.sql("data.csv", "select `toString(nms)` from file")