一部のデータを組み合わせて match() 関数を使用し、非常に大きなデータ フレームから特定の取引日時を取得していますが、コードが機能しない理由に完全に困惑しています。Date 列と Time 列が分離されていることに注意してください。これにより、as.POSIXct 関数の使用も難しくなっています。ご覧ください:
これは、データが私に来る方法です:
Symbol Date Time Open High Low Close Volume Tick.Count
1 USH94 01/3/1994 7:21 114.4062 114.4375 114.3750 114.4062 0 5
2 USH94 01/3/1994 7:22 114.3750 114.4062 114.3125 114.3750 0 11
3 USH94 01/3/1994 7:23 114.3438 114.3750 114.3125 114.3438 0 7
4 USH94 01/3/1994 7:24 114.3125 114.3125 114.2500 114.2812 0 14
5 USH94 01/3/1994 7:25 114.2500 114.2812 114.2188 114.2188 0 6
6 USH94 01/3/1994 7:26 114.1875 114.2500 114.1875 114.2500 0 13
次に、date() 関数と time() 関数を使用して、列を要素から日付と時刻の値に変換します。この場合、変数 a として文字列として保存された秒も追加し、時間の変更により時間を追加します。
US$Time <- times(paste(US$Time,a,sep = ':'))+1/24
US$Date <- dates(as.character(US$Date))
現在の米国の様子は次のとおりです。
head(US)
Symbol Date Time Open High Low Close Volume Tick.Count
1 USH94 01/03/94 08:21:00 114.4062 114.4375 114.3750 114.4062 0 5
2 USH94 01/03/94 08:22:00 114.3750 114.4062 114.3125 114.3750 0 11
3 USH94 01/03/94 08:23:00 114.3438 114.3750 114.3125 114.3438 0 7
4 USH94 01/03/94 08:24:00 114.3125 114.3125 114.2500 114.2812 0 14
5 USH94 01/03/94 08:25:00 114.2500 114.2812 114.2188 114.2188 0 6
6 USH94 01/03/94 08:26:00 114.1875 114.2500 114.1875 114.2500 0 13
同じ。
次に、日付と時刻を paste() 関数と組み合わせようとします
US$TradeDates <- paste(US$Date,US$Time)
head(US)
Symbol Date Time Open High Low Close Volume Tick.Count TradeDates
1 USH94 01/03/94 08:21:00 114.4062 114.4375 114.3750 114.4062 0 5 01/03/94 0.34791667
2 USH94 01/03/94 08:22:00 114.3750 114.4062 114.3125 114.3750 0 11 01/03/94 0.34861111
3 USH94 01/03/94 08:23:00 114.3438 114.3750 114.3125 114.3438 0 7 01/03/94 0.34930556
4 USH94 01/03/94 08:24:00 114.3125 114.3125 114.2500 114.2812 0 14 01/03/94 0.35000000
5 USH94 01/03/94 08:25:00 114.2500 114.2812 114.2188 114.2188 0 6 01/03/94 0.35069444
6 USH94 01/03/94 08:26:00 114.1875 114.2500 114.1875 114.2500 0 13 01/03/94 0.35138889
TradeDates 列に突然 10 進数形式の時間が含まれていることを確認してください....しかし、本当に困惑しているのは、要素ごとにまったく同じ関数を実行すると、目的の結果が得られることです。
US$TradeDates[1] <- paste(US$Date[1],US$Time[1])
head(US)
Symbol Date Time Open High Low Close Volume Tick.Count TradeDates
1 USH94 01/03/94 08:21:00 114.4062 114.4375 114.3750 114.4062 0 5 01/03/94 08:21:00
2 USH94 01/03/94 08:22:00 114.3750 114.4062 114.3125 114.3750 0 11 01/03/94 0.34861111
3 USH94 01/03/94 08:23:00 114.3438 114.3750 114.3125 114.3438 0 7 01/03/94 0.34930556
4 USH94 01/03/94 08:24:00 114.3125 114.3125 114.2500 114.2812 0 14 01/03/94 0.35000000
5 USH94 01/03/94 08:25:00 114.2500 114.2812 114.2188 114.2188 0 6 01/03/94 0.35069444
6 USH94 01/03/94 08:26:00 114.1875 114.2500 114.1875 114.2500 0 13 01/03/94 0.35138889
最後の列の最初の行はまさに私が求めているものですが、他のすべての行はまだ 10 進数形式になっていることに注意してください。これが管理可能なデータセットである場合、ループを使用するだけですが、これは文字通り数十億行であり、R はそのループを処理できません。
何かご意見は?