我对使用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:更正