【发布时间】:2011-12-10 23:50:11
【问题描述】:
我有一个包含 5700 万行和 23 列的数据集。有一列包含不同鸟类的物种名称(大约 2000 个唯一名称),我想为每个唯一的物种名称提取两列数据(纬度,经度),并写入每个文件的纬度/经度数据种,以种名作为文件名。从我知道的唯一语言 R 开始,这需要很长时间。该任务的适当代码是什么?
我在这里尝试一些伪代码来演示我猜测的代码大概是什么样子:
FOR i IN 1:unique(species_name)
SELECT latitude,longitude WHERE species_name=[i]
WRITE [some code that writes a text file with species name as the file name]
LOOP END;
我想我可以在 OSX 上的终端中做这种事情?
编辑 20111211: 这是我在 R 中的工作流程:
require(RMySQL);
require(plyr)
drv <- dbDriver("MySQL")
con <- dbConnect(drv, user = "asdfaf", dbname = "test", host = "localhost")
splist <- read.csv("splist_use.csv")
sqlwrite <- function(spname) {
cat(spname) g1 <- dbGetQuery(con
, paste("SELECT col_16,col_18 FROM dat WHERE col_11='"
, spname, "'", sep="")
)
write.csv(g1, paste(spname, ".csv", sep=""))
rm("g1") }
l_ply(splist, sqlwrite, .progress="text" )
【问题讨论】:
-
您使用的是什么 SQL 服务器?大多数都提供导出功能,我认为在您的特定情况下会快得多。
-
MySQL。我唯一的 GUI 界面是 SequelPro。
-
对,我可以导出,但我必须过滤物种,然后导出,然后做 2000 次,这有点多。