查询PostgreSQL数据库使用R(rpy2)获取具有多个位置的时间序列

时间:2013-03-28 14:24:55

标签: python r rpy2

我有一个Postgresql数据库表,其中包含空间16 xy点的z测量值。测量z每周进行1。5年。每个度量都是一个单独的记录,具有xy位置,日期和度量z的属性。

我将这些数据绘制为具有多条线的时间序列图,每条线对应一个xy点。我可以用一种看似效率低下的方式成功地做到这一点。我想学习更好的方法。我正在寻找一种更有效的方法来构建查询,以便我可以尝试使用与此示例类似的ggplot:Plotting multiple time-series in ggplot

我在搜索示例查询时遇到问题,因为我不知道要搜索哪些短语。我应该搜索什么功能,联接类型等?

EDIT ----------------------------------

该表基本上以这种方式设置:

location    date    elevation
w1  01/01/13    0.34
w2  01/01/13    0.45
w3  01/01/13    0.56
w1  01/08/13    0.59
w2  01/08/13    0.70
w3  01/08/13    0.81
w1  01/15/13    0.02
w2  01/15/13    0.13
w3  01/15/13    0.24
w1  01/22/13    0.81
w2  01/22/13    0.92
w3  01/22/13    1.03

...

#get well list
query = r.dbSendQuery(RdatabaseConnection,statement="""
SELECT
     location
FROM
    mytable as wells
""")

wellIDs = r.fetch(query)
i=1
for ID in wellIDs[0]:
    print '\t',ID
    query = r.dbSendQuery(RdatabaseConnection,statement="""
    SELECT
        location,
        date,
        elevation
    FROM
        mytable
    WHERE
            location = '"""+str(ID)+"""'
    ORDER BY
        date
    """)

    wellData = r.fetch(query)
    r.dbClearResult(query)
    robjects.globalenv['data']=wellData

    if i==1:
        robjects.r("""plot(data$elevation~data$date,type='l')""")
    else:   
        robjects.r("""
        data<-na.omit(data)
        points(data$elevation~data$date,type='l')
        """)
    i+=1

rToolsV2.closeGraphicDevice()

0 个答案:

没有答案