我有一个包含 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" )
最佳答案
恕我直言,您能做的最好的事情是使用脚本语言(python、perl、php、shell)并从那里生成文件名和查询。这不是太难,但你必须学习一种不同的语言。 SQL 不适合命令式编程。
关于mysql - SQL 循环读取,然后将数据写入文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8460850/