我将时间序列日期加载到R中作为数据框。但是,当我查看数据时,时间序列日期不会显示为字符串,尽管日期列的类被识别为日期类。在不使用zoo的情况下,如何让数据集以字符串格式显示日期。这实际上是出于视觉目的,能够查看数据是否正确。
Date Open High Low Close Volume Adj Close
3/8/2013 834.5 834.92 825.05 831.52 2911900 831.52
3/7/2013 834.06 836.62 829.58 832.6 2052700 832.6
3/6/2013 841.03 844 828.81 831.38 2873000 831.38
3/5/2013 828.93 840.15 828.9 838.6 4044100 838.6
3/4/2013 805.3 822.84 805 821.5 2775600 821.5
在R中显示为:
Date Open High Low Close Volume Adj.Close
15772 834.50 834.92 825.05 831.52 2911900 831.52
15771 834.06 836.62 829.58 832.60 2052700 832.60
15770 841.03 844.00 828.81 831.38 2873000 831.38
15769 828.93 840.15 828.90 838.60 4044100 838.60
15768 805.30 822.84 805.00 821.50 2775600 821.50
15765 797.80 807.14 796.15 806.19 2175400 806.19
我正在使用命令
data=read.csv("file location",header=T,colClasses=c("Date","numeric","numeric","numeric","numeric","numeric","numeric"))
这是输出输出:
dput(head(data))
structure(list(Date = structure(c(15772, 15771, 15770, 15769,
15768, 15765), class = "Date"), Open = c(834.5, 834.06, 841.03,
828.93, 805.3, 797.8), High = c(834.92, 836.62, 844, 840.15,
822.84, 807.14), Low = c(825.05, 829.58, 828.81, 828.9, 805,
796.15), Close = c(831.52, 832.6, 831.38, 838.6, 821.5, 806.19
), Volume = c(2911900, 2052700, 2873000, 4044100, 2775600, 2175400
), Adj.Close = c(831.52, 832.6, 831.38, 838.6, 821.5, 806.19)), .Names = c("Date",
"Open", "High", "Low", "Close", "Volume", "Adj.Close"), row.names = c(NA,
6L), class = "data.frame")
答案 0 :(得分:1)
您需要使用as.Date
,您必须知道数据的起源日期。例如,假设您知道日期数据来自1970-01-01
,您可以执行此操作进行转换:
dates <- c(1314, 1315, 1316)
as.Date(dates, format="%Y-%m-%d", origin="1970-01-01")
[1] "1973-08-07" "1973-08-08" "1973-08-09"
<强>更新强>
根据里卡多的评论,您的原始数据似乎是1997-05-28
as.Date(dates, format="%Y-%m-%d", origin="1997-05-28")
[1] "2001-01-01" "2001-01-02" "2001-01-03"
答案 1 :(得分:0)
您可以将日期列保留为字符,然后将其转换为日期。
或者如read.table的帮助所示:
否则需要一个as方法(来自包方法) 从“字符”转换为指定的正式类。
请参阅this question如何应用此功能。
setClass("myDate")
setAs("character","myDate", function(from) as.Date(from, format="%d/%m/%Y"))
df <- read.table(header = TRUE, colClasses=c("myDate","numeric","numeric","numeric","numeric","numeric","numeric"),
text = 'Date Open High Low Close VolumeAdj Close
3/8/2013 834.5 834.92 825.05 831.52 2911900 831.52
3/7/2013 834.06 836.62 829.58 832.6 2052700 832.6
3/6/2013 841.03 844 828.81 831.38 2873000 831.38
3/5/2013 828.93 840.15 828.9 838.6 4044100 838.6
3/4/2013 805.3 822.84 805 821.5 2775600 821.5')
str(df)
'data.frame': 5 obs. of 7 variables:
$ Date : Date, format: "2013-08-03" "2013-07-03" "2013-06-03" ...
$ Open : num 834 834 841 829 805
$ High : num 835 837 844 840 823
$ Low : num 825 830 829 829 805
$ Close : num 832 833 831 839 822
$ VolumeAdj: num 2911900 2052700 2873000 4044100 2775600
$ Close.1 : num 832 833 831 839 822