从R编写Excel到Excel时提取日期

时间:2019-06-25 07:27:53

标签: r excel quantmod yahoo-api

我正在从r(使用quantmod从外部来源获取数据)中提取股票价格(开盘,最高价,最低价,收盘价,成交量等)的价格列表,但是省略了日期列

我认为问题在于,因为“日期”未被识别为变量,而其他列为(打开,高位等)。我试图通过as.Date插入日期(从Sys.Date-365到Sys.Date,因为我只需要一年的数据集),然后绑定它们。但是,由于长度不同,并且这是基于向量的列表,因此不适合(来自外部来源的数据仅在工作日内显示,而as.Date将显示完整的365天。

x <- getSymbols("SPY", src ="yahoo", from=Sys.Date()-365, to=Sys.Date(), auto.assign=FALSE )

write.csv(s, file = "test.csv")

像上面那样写csv将导致日期列显示为1、2、3、4 ...,但是我需要与价格匹配的日期,如在r的“查看”模式中显示的日期。

2 个答案:

答案 0 :(得分:0)

它与xts zoo创建的getSymbols对象如何存储其行索引有关。只需将其转换为导出时的常规data.frame,即可将日期索引包含为字符串:

ysyms <- getSymbols("SPY",
                    src = "yahoo",
                    from = Sys.Date()-365,
                    to = Sys.Date(),
                    auto.assign = FALSE
                    )

# Convert to data.frame on export.
write.csv(as.data.frame(ysyms), file = "test.csv")

答案 1 :(得分:0)

问题中的write.zoo不是data.frame,它是zoo / xts对象,因此请使用write.zoo(x, "file.csv", sep = ",")

def logger(type_of_message, msg, ticket_no):   #This will create records/log in app.log file. And can be used for debuging too. 
    log_file = str(datetime.utcnow().strftime('%d_%m_%Y')) + '.log'
    if(type_of_message == 'INFO' or 'Info'):
        logger = logging.LoggerAdapter(logging.getLogger(__name__), {'ticket_no': '%s' % (ticket_no)})
        logging.basicConfig(filename = log_file, filemode = 'a', level = logging.INFO, format =  '%(ticket_no)s -  %(asctime)s -  %(name)s  -  %(levelname)s - %(message)s')    
        logger.info(msg)
    elif(type_of_message == 'ERROR' or 'Error'): 
        logger = logging.LoggerAdapter(logging.getLogger(__name__), {'ticket_no': '%s'%(ticket_no)}) 
        logging.basicConfig(filename = 'app.log', filemode = 'a', level = logging.ERROR,  format  = '%(ticket_no)s - %(asctime)s -  %(name)s  -  %(levelname)s - %(message)s')
        logger.info(msg)