r语言 - 在使用SQLDF或read.csv.sql时选择每个第n列



我对使用SQL语句相当陌生,并且在使用它们从一个大表中选择所需的列并将它们拉入r时遇到了一点麻烦。

我想取一个csv文件,并将选定的列读入r,特别是每9列和第10列。在R中,类似于:

read.csv.sql("myfile.csv", sql(select * from file [EVERY 9th and 10th COLUMN])

我的互联网的拖网建议,选择每第n行可以用一个SQL语句使用MOD这样的东西(请纠正我,如果我错了):

"SELECT *
        FROM   file
        WHERE  (ROWID,0) IN (SELECT ROWID, MOD(ROWNUM,9) OR MOD(ROWNUM,10)"

是否有一种方法可以使列工作?提前感谢。

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")

UPDATE:切换到read.csv.sql

更新2:更正

最新更新