我对使用SQL语句相当陌生,在使用SQL语句从大型表中选择所需列并将它们拖到R中时遇到了一些小问题。
我想取一个csv文件并将选定的列读入r中,特别是每9和10列一次。在R中,类似于:
read.csv.sql("myfile.csv", sql(select * from file [EVERY 9th and 10th COLUMN])我在互联网上的搜索表明,选择第n行可以使用这样的使用MOD的SQL语句来完成(如果我错了,请纠正我):
"SELECT *
FROM file
WHERE (ROWID,0) IN (SELECT ROWID, MOD(ROWNUM,9) OR MOD(ROWNUM,10)"有什么方法可以让这个方法为列工作吗?提前谢谢。
发布于 2013-03-12 22:50:30
read.csv read.csv就足以做到这一点:
# determine number of columns
DF1 <- read.csv(myfile, nrows = 1)
nc <- ncol(DF1)
# create a list nc long where unwanted columns are NULL and wanted are NA
colClasses <- rep(rep(list("NULL", NA), c(8, 2)), length = nc)
# read in
DF <- read.csv(myfile, colClasses = colClasses)使用sqldf替换最后一行的sqldf如下:
nms <- names(DF1)
vars <- toString(nms[is.na(colClasses)])
DF <- fn$read.csv.sql(myfile, "select $vars from file")更新:切换到read.csv.sql
更新2:更正。
https://stackoverflow.com/questions/15373466
复制相似问题