我是使用SQL语句的新手,并且在使用它们从大表中选择所需的列并将它们拉入R时遇到一些麻烦。
我想获取一个csv文件并将所选列读入r,特别是每9和10列。在R中,类似于:
read.csv.sql("myfile.csv", sql(select * from file [EVERY 9th and 10th COLUMN])
我对互联网的拖网建议选择每一行可以使用一个像这样的MOD的SQL语句来完成(如果我错了请纠正我):
"SELECT *
FROM file
WHERE (ROWID,0) IN (SELECT ROWID, MOD(ROWNUM,9) OR MOD(ROWNUM,10)"
有没有办法让这个列适用于列?提前致谢。
答案 0 :(得分:2)
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:更正。