2017-04-17 62 views
-2

我用从Excel导入的数据集:错误as.POSIXlt.character(X,TZ,...):字符串是不是一个标准的明确格式

OBX <- read_excel("C:/Users/neri_/Desktop/OBX Weekly Return.xlsx") 

     Date   OBX 
1 2010-12-28 0.0071366 
2 2010-12-29 4.97265e-05 
3 2010-12-30 -0.00452489 
4 2011-01-03 0.00896603 
5 2011-01-04 -0.0101488 
6 2011-01-05 0.00520143 
7 2011-01-06 -0.000422917 
8 2011-01-07 -0.00301145 
9 2011-01-10 -0.00341996 
10 2011-01-11  0.013326 
11 2011-01-12 0.00882484 

我与这个错误挣扎消息,

“在as.POSIXlt.character错误(X,TZ,...):字符串不是一个明确的标准格式”, 当我试图运行,我现在遇到代码:

weeklydata<-to.weekly(OBX). 

我想将每日数据数据转换为每周数据,如何修改日期格式,以便我可以运行to.weekly命令?

感谢您的帮助!

+0

是否要将2012-12-30这种基于月份的格式的数据转换为2012-52-6这样的基于星期的格式?顺便说一下,一定要在年底左右进行测试。 – KoenV

+0

请考虑花点时间阅读更多关于格式化您的帖子的信息,因为这可以帮助所有人尝试提供帮助。例如,使用代码块(显然是用于代码),并用块引用错误消息。 [阅读更多](https://stackoverflow.com/help/formatting)。 – Barthy

+0

我只是想将每日价格转换为每周价格。通常,当我通过Quantmod从Yahoo Finance直接下载股票价格时,这不是问题。但是,从Excel文件导入数据时出现问题。 –

回答

0

转换与as.Date功能:

mydate<-"2010-12-28 0.0071366" 
mydate<-as.Date(mydate,"%Y-%m-%d") 
format(mydate,"%Y-%U") 
+0

我不确定这是否解决了我的问题。我试图使用你的代码,然后运行到.weekly命令。但我得到了同样的错误 –

0

您可以使用date2ISOweek()ISOweek包。使用stringr进行模式更新并使用dplyr来生成星期结果;加载包后,代码将如下所示。

library(ISOweek) 
library(stringr) 
library(dplyr) 

# mocking up some data 
OBX <- data.frame(
    Date = c("2010-12-28", "2010-12-29", "2010-12-30", "2010-12-31", "2011-01-03", "2011-01-04"), 
    OBX = 101:106 
) 

# transform form month- to week-based and trim some 
OBX$dateWeek <- date2ISOweek(OBX$Date) 

# get rid of the preceeding "W", next drop day-of-week 
OBX$dateWeek <- stringr::str_replace(OBX$dateWeek, "-W", "-") 
OBX$dateWeek <- stringr::str_replace(OBX$dateWeek, "-.$", "") 

# sum per week and print 
OBX %>% 
    group_by(dateWeek) %>% 
    summarise(weekSum = sum(OBX)) 

# the results of the mocked data 
# A tibble: 2 × 2 
    dateWeek weekSum 
    <chr> <int> 
1 2010-52  410 
2 2011-01  211 

请让我知道这是否符合您的需求的答案。

+0

谢谢你的努力!我试过你的代码,我不认为这是最适合我寻找的答案,我很害怕。正如我前面提到的,这个例子工作得很好:#从雅虎财经下载数据 –

相关问题