1

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

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

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

我对互联网的搜索表明,可以使用类似这样的 MOD 的 SQL 语句来选择每第 n 行(如果我错了,请纠正我):

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

有没有办法让这个工作列?提前致谢。

4

1 回答 1

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:更正。

于 2013-03-12T22:50:30.067 回答