3

よろしくお願いします。quantmodパッケージのgetQuote関数を使用しています。この関数は、次のデータフレームを返します。

ここに画像の説明を入力してください

データフレーム構造を維持しながら、タイムスタンプを除外するために最初の列のすべての日付を変更する方法はありますか?最初の列に「YYYY-MM-DD」が欲しいだけです。それが日付のベクトルである場合、substr(df [、1]、1,10)を使用することを私は知っています。また、apply(df [、1]、1、substr、1,10)を使用してapply関数を調べました。

4

5 に答える 5

4

まだ言及されていない別のオプション:

tt <- getQuote("AAPL")
trunc(tt[,1], units='days')

これにより、の日付が返されPOSIXltます。必要に応じて、でラップすることができas.POSIXctます。

于 2013-01-16T21:25:52.917 に答える
2

私はこれを行いますlubridate

library(plyr)
library(lubridate)

tickers <- c("AAPL","AAJX","ABR")
df <- ldply(tickers, getQuote)
rownames(df) <- tickers

df[,"Trade Time"] <- paste(year(df[,"Trade Time"]),month(df[,"Trade Time"]),day(df[,"Trade Time"]),sep="-")

日付を印刷するもっとエレガントな方法があるかもしれませんが、これが最初に思いついたものです。

于 2013-01-16T20:15:06.200 に答える
2

使用して?strptime

tt <- getQuote("AAPL")
tt[,1]
[1] "2013-01-16 02:52:00 CET"
as.POSIXct(strptime(tt[,1],format ='%Y-%m-%d')) ## as.POSIXct because strptime returns POSIXlt
[1] "2013-01-16 CET"

編集

POSIXct の format 引数を使用できますが、前に tt[,1] を文字に変換する必要があります。

as.POSIXct(as.character(tt[,1]),format ='%Y-%m-%d')
[1] "2013-01-16 CET"
于 2013-01-16T20:08:29.013 に答える
0

gsub を使用することもできます。データ型を変換する必要はありません。

tt <- getQuote("AAPL")
tt[, 'Trade Time']<- gsub(" [0-9]{2}:[0-9]{2}:[0-9]{2}", "", tt[, 'Trade Time'])
于 2013-01-17T01:00:01.933 に答える
0

次のように簡単にできます。

tt[,1]=as.Date(tt[,1])

( tt はtt <- getQuote("AAPL")、代替回答に示されているように)

コンマの前の空白は「すべての行を実行する」ことを意味し、コンマの後の 1 は「最初の列のみを操作する」ことを意味します。

タイムスタンプを取り除こうとしている場合は、まさにあなたが望むものでなければならない Date オブジェクトが得られるため、私はこのソリューションを好みます。

agstudy's answerは timezone の日付を提供します。これは、スクリプトを別のタイムゾーンで初めて実行するときに噛み付くでしょう。(余談ですが、クリスマスに英国で単体テスト スイートを実行したところ、テスト コードの微妙なタイムゾーンの仮定が原因で、いくつかのリグレッションが発生しました。)

于 2013-01-17T09:19:23.180 に答える