p****e 发帖数: 165 | 1 请教一下大家,我想把csv文件导入R, 然后对此csv文件用SQL来选取不同的subset, 调
用sqldf package, R就一直在load, 奇慢无比,最后force quit了。
d = read.csv("abc.csv")
newd <- sqldf("select * from d where day = '2012-10-01'", row.names=TRUE)
于是R就卡住了。
我再想是不是需要把csv转化成data frame然后才可以在上面query, 于是就又尝试了这
个:
d = read.csv("abc.csv")
df <- as.data.frame(d)
newd <- sqldf("select * from df where day = '2012-10-01'", row.names=TRUE)
继续卡。。。force quit了
继续尝试,想是不是可以用read.csv.sql,
d <- read.csv.sql("abc.csv", eol "\r")
还是卡。。。force quit了。。。
请大牛们帮帮忙,我如果想用sqldf,又想用external data source (e.g. csv, txt),
怎么样才可以用呢?是不是需要把csv load到我的数据库中,然后用R连接数据库密码
+服务器地址等连接上数据库以后才可以用SQL? |
w********m 发帖数: 1137 | 2 Sadly R doesn't have native support for SQL. The creators of R/S in AT&T Lab
designed it for file systems such as UNIX or LINUX -- they just use
scripting language to manipulate or query data. The 3rd party access like
sqldf or RODBC is somewhat not stable. |
s*********e 发帖数: 1051 | 3 it might not be the issue of sqldf. how big is csv file?
when people have a hammer, everything will look like a nail. ;-)
【在 p****e 的大作中提到】 : 请教一下大家,我想把csv文件导入R, 然后对此csv文件用SQL来选取不同的subset, 调 : 用sqldf package, R就一直在load, 奇慢无比,最后force quit了。 : d = read.csv("abc.csv") : newd <- sqldf("select * from d where day = '2012-10-01'", row.names=TRUE) : 于是R就卡住了。 : 我再想是不是需要把csv转化成data frame然后才可以在上面query, 于是就又尝试了这 : 个: : d = read.csv("abc.csv") : df <- as.data.frame(d) : newd <- sqldf("select * from df where day = '2012-10-01'", row.names=TRUE)
|
p****e 发帖数: 165 | 4 Thanks for your reply. It is only ~250kb, ~2000 rows
【在 s*********e 的大作中提到】 : it might not be the issue of sqldf. how big is csv file? : when people have a hammer, everything will look like a nail. ;-)
|
g******2 发帖数: 234 | 5 if you use R to do the selection, it's also just one line thing:
newd <- d[d$day == "2012-10-01",] |
p****e 发帖数: 165 | 6 Thanks, probably I listed a bad SQL usage in my example. Ideally I hope to
aggregate rows by using some "group by" SQL statement.
【在 g******2 的大作中提到】 : if you use R to do the selection, it's also just one line thing: : newd <- d[d$day == "2012-10-01",]
|
a****r 发帖数: 1486 | 7 你既然已经把数据读到R里了,就跟SQL没有关系了
你应该用R的方式去“group”
就像楼上所述。。
【在 p****e 的大作中提到】 : Thanks, probably I listed a bad SQL usage in my example. Ideally I hope to : aggregate rows by using some "group by" SQL statement.
|
w***a 发帖数: 432 | 8 之前试过RPostgreSQL,好象都很顺利的,时间有点久,记不得很清楚了。
不过我真正想说的是,既然用了R了就没必要用数据库了。
所有的数据库的功能都可以用R实现了的。
坚持用R也可以让你对R学习得更深入。 |
w***a 发帖数: 432 | 9 不好意思,我再去看了一下sqldf其实也还是R,我以为是连接到数据。。。。。
我试了一下好象没有问题,当然我的数据不是大,就几百行。
你保证读入的时候数据是对的吗?看看
head(d) |
w***a 发帖数: 432 | 10 group的功能可以用R中的aggregate实现。 |
w***a 发帖数: 432 | 11 group的功能可以用R中的aggregate实现。 |