-3

時系列の日付をデータ フレームとして R に読み込んでいます。ただし、データを表示すると、日付列のクラスは日付クラスとして認識されますが、時系列の日付は文字列として表示されません。動物園を使用せずに、データセットに日付を文字列形式で表示するにはどうすればよいですか。これは、データが正しいかどうかを視覚的に確認するためのものです。

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 出力は次のとおりです。

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")
4

2 に答える 2

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"
于 2013-03-11T02:14:29.180 に答える
0

日付列を文字として保持し、後で日付に変換できます。

または read.table のヘルプに示されているように:

それ以外の場合は、「文字」から指定された形式クラスに変換するための (パッケージ メソッドからの) as メソッドが必要です。

これを適用する方法については、この質問を参照してください。

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
于 2013-03-11T09:56:47.417 に答える