2015-05-14 149 views
1

我處理很多時間序列刻度數據,並試圖使用rpy2將這些數據從Python獲取到R.具體來說,我想將包含毫秒時間戳(關鍵)和時區信息的時間序列很高興有)。rpy2是否支持帶時區的毫秒時間戳和時間戳?

爲了測試傳輸時間戳,我想:

from pytz import timezone 
from datetime import datetime 
import rpy2.robjects as robjects 

# 1 microsecond into 2015 in US Eastern time 
time = datetime(2015,1,1,0,0,0,1, tzinfo = timezone('US/Eastern')) 
robjects.r.assign('time', time) 

但是這給了:

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "C:\Python\2.7\lib\site-packages\rpy2\robjects\functions.py", line 170, in __call__ 
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs) 
    File "C:\Python\2.7\lib\site-packages\rpy2\robjects\functions.py", line 96, in __call__ 
    new_args = [conversion.py2ri(a) for a in args] 
    File "C:\Python\2.7\lib\site-packages\singledispatch.py", line 210, in wrapper 
    return dispatch(args[0].__class__)(*args, **kw) 
    File "C:\Python\2.7\lib\site-packages\rpy2\robjects\conversion.py", line 39, in py2ri 
    raise NotImplementedError("Conversion 'py2ri' not defined for objects of type '%s'" % str(type(obj))) 
NotImplementedError: Conversion 'py2ri' not defined for objects of type '<type 'datetime.datetime'>' 

好像rpy2不支持datetime對象......所以,我怎麼能轉移時間串聯成R'

回答

1

有幾種日期/時間對象的R.

例如:

robjects.POSIXct([time]) 

一旦你知道,你可以快速添加一個轉換規則rpy2

+0

不幸的是,毫秒當Python'datetime'被轉換爲R的'POSIXct'時,被rpy2所丟棄。具體來說,'robjects.POSIXct([datetime(2015,1,1,0,0,0,0)])。r_repr()== robjects.POSIXct([datetime(2015,1,1,0,0,0 ,1)])。r_repr()'是'True' – mchen

+0

這會有幫助嗎?http://stackoverflow.com/questions/2150138/how-to-parse-milliseconds-in-r – lgautier