解決:
以下の答えを組み合わせる:
#First create a vector with all my dates
#Create a frame to hold the data
testdf = data.frame(sdci=rep("",1),stringsAsFactors=FALSE)
#needs library(lubridate) for month/year functions
library(lubridate)
#Loop and Add data to the df
for (i in 1:lenght(dates2){testdf[i, ] = c(dbGetQuery(con,paste0(' SELECT \
sdci_',year(dates2[i]),'_',sprintf("%02d",month(dates2[i])),'_mean from \
gr_sea_outlets_tier2 order by area_km2'))}
編集の終わり
次のコマンドを使用して、データを 1 つずつ取得しています。
data$"2000/8/1" = dbGetQuery(db,"SELECT sdci_2000_08_mean as '2000/08/01' from gr_sea_outlets_tier2 order by area_km2 desc limit 1;")
しかし、私は 50 個のテーブルを持っているので、プロセスは少し面倒です。
ループを作成しようとしていますが、構文がわかりません。
ここに私がやりたいことのためのいくつかの疑似コード(bashのようなもの)があります:
for year in $(seq 2000 2010); do
for month in $(seq -w 05 09); do
data$"$year"/"$month"/01" = dbGetQuery(db,"SELECT sdci_$year_$month_mean as '$year/$month/01' from gr_sea_outlets_tier2 order by area_km2 desc limit 1;");
done;
done
一時的な解決策として、R に解析するための一連のコマンドを bash で作成することに成功しました。
for year in $(seq 2000 2010); do for month in $(seq -w 05 09); do echo data\$\'"$year"-"$month"-"01"\' \<\- dbConnect\(db,\"SELECT sdci_"$year"_"$month"_mean from gr_sea_outlets_tier2 order by area_km2 desc limit 1\;\"\) >> r.cmd.data ; done; done
しかし、R内でそれを行うことは可能だと思います