首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQLDF或read.csv.sql选择每个第N列

使用SQLDF或read.csv.sql选择每个第N列
EN

Stack Overflow用户
提问于 2013-03-12 22:25:28
回答 1查看 1.4K关注 0票数 1

我对使用SQL语句相当陌生,在使用SQL语句从大型表中选择所需列并将它们拖到R中时遇到了一些小问题。

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

代码语言:javascript
复制
read.csv.sql("myfile.csv", sql(select * from file [EVERY 9th and 10th COLUMN])

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

代码语言:javascript
复制
"SELECT *
        FROM   file
        WHERE  (ROWID,0) IN (SELECT ROWID, MOD(ROWNUM,9) OR MOD(ROWNUM,10)"

有什么方法可以让这个方法为列工作吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-03-12 22:50:30

read.csv read.csv就足以做到这一点:

代码语言:javascript
复制
# 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如下:

代码语言:javascript
复制
nms <- names(DF1)
vars <- toString(nms[is.na(colClasses)])
DF <- fn$read.csv.sql(myfile, "select $vars from file")

更新:切换到read.csv.sql

更新2:更正。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15373466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档