as.Date函数不转换日期

Ser*_*dar 5 r

我的as.Date功能有一个小问题.我加载了一个prn数据作为csv文件,我的老师说没关系,然后当我尝试以标准方式(y,m,d)设置我的日期时,它给了我一年的疯狂数字.PZU文件是波兰公司的股票价格.另外,我也不确定如何设定时间.我真的很感激帮助.仅供参考,我使用R软件和R studio界面.

pzu<-read.csv("PZU.prn",header=F)[,1:7]
names(pzu)<-c("name","date","time","open","high","low","close")
head(pzu)
#  name     date time open high low close
#1  PZU 20100512  845  349  349 349   349
#2  PZU 20100512  845  349  349 349   349
#3  PZU 20100512  845  349  349 349   349
#4  PZU 20100512  845  349  349 349   349
#5  PZU 20100512  845  349  349 349   349
#6  PZU 20100512  845  349  349 349   349

class(pzu$date) # output is an "integer"

str(pzu)
#data.frame':   960638 obs. of  7 variables:
# $ name : Factor w/ 1 level "PZU": 1 1 1 1 1 1 1 1 1 1 ...
# $ date : int  20100512 20100512 20100512 20100512 20100512 20100512 20100512 20100512 20100512 20100512 ...
# $ time : int  845 845 845 845 845 845 845 845 845 845 ...
# $ open : num  349 349 349 349 349 349 349 349 349 349 ...
# $ high : num  349 349 349 349 349 349 349 349 349 349 ...
# $ low  : num  349 349 349 349 349 349 349 349 349 349 ...
# $ close: num  349 349 349 349 349 349 349 349 349 349 ...

pzu$date<-as.Date(pzu$date)
head(pzu)
#name       date time open high low close
#1  PZU 7003-05-03  845  349  349 349   349
#2  PZU 7003-05-03  845  349  349 349   349
#3  PZU 7003-05-03  845  349  349 349   349
#4  PZU 7003-05-03  845  349  349 349   349
#5  PZU 7003-05-03  845  349  349 349   349
#6  PZU 7003-05-03  845  349  349 349   349
Run Code Online (Sandbox Code Playgroud)

S. *_*ica 5

您的日期不符合格式as.Date().首先,使用它们将它们转换为字符as.character(),然后通过format参数指定正确的格式as.Date():

as.Date(as.character(20100512),format="%Y%m%d")
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过转换为添加时间变量POSIXct.如上所述转换日期.取时间变量中的数百,乘以3600(3600秒到一小时)并添加.取剩余部分,乘以60(60秒到一分钟)并再次添加:

date.num <- 20100512
time.num <- 845
as.POSIXct(as.character(date.num),format="%Y%m%d") +
(time.num%/%100)*3600 +
(time.num%%100)*60

"2010-05-12 08:45:00 CEST"
Run Code Online (Sandbox Code Playgroud)

看看?POSIXctR可以用时间和日期做的所有有趣的事情.