感謝您提前給予的幫助。我跟在quantmod包中的getQuote函數,該函數返回以下數據幀的工作:在數據幀列中提取日期的一部分
有修改第一列的所有日期排除時間戳的方式,同時保留數據幀結構?我只想在第一列中輸入「YYYY-MM-DD」。我知道如果它是一個日期向量,我會使用substr(df [,1],1,10)。我還研究了apply函數,其中:apply(df [,1],1,substr,1,10)。
感謝您提前給予的幫助。我跟在quantmod包中的getQuote函數,該函數返回以下數據幀的工作:在數據幀列中提取日期的一部分
有修改第一列的所有日期排除時間戳的方式,同時保留數據幀結構?我只想在第一列中輸入「YYYY-MM-DD」。我知道如果它是一個日期向量,我會使用substr(df [,1],1,10)。我還研究了apply函數,其中:apply(df [,1],1,substr,1,10)。
另一種選擇沒有提到:
tt <- getQuote("AAPL")
trunc(tt[,1], units='days')
它返回POSIXlt
的日期。如果你願意,你可以把它包裝在as.POSIXct
。
使用?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的格式說法,但你需要之前的TT轉換[,1]字符。
as.POSIXct(as.character(tt[,1]),format ='%Y-%m-%d')
[1] "2013-01-16 CET"
我會做到這一點與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="-")
有可能是打印日期的更優雅的方式,但是這是第一次來找我。
您可以使用gsub。無需轉換數據類型。
tt <- getQuote("AAPL")
tt[, 'Trade Time']<- gsub(" [0-9]{2}:[0-9]{2}:[0-9]{2}", "", tt[, 'Trade Time'])
它可以是簡單的:
tt[,1]=as.Date(tt[,1])
(其中TT是tt <- getQuote("AAPL")
,如在備選答案示出)
逗號之前的空白表示「做所有行 「,逗號後的1表示」(僅)第一列「。
我更喜歡這個解決方案,因爲它給了你一個Date對象,如果你試圖去掉時間戳,它必須正是你想要的。
agstudy的回答給你一個日期帶有一個時區,這會讓你第一次在不同的時區運行你的腳本。 (另外:由於我的測試代碼中有一個微妙的時區假設,我在聖誕節期間在英國運行它時在單元測試套件中得到了一些迴歸。)
+1優雅使用trunc! – agstudy
看起來不錯並且描述性很強,但實際上使用它更醜陋:'tt [,1] = as.POSIXct(trunc(tt [,1],units =「days」))''give me'_'origin'must be supplied_ 「 –
@DarrenCook,嗯,我沒有得到這樣的錯誤。我不是很熟悉quantmod。當你執行'str(tt)'時,是'POSIXct'中的第一個'Trade Time'列嗎? –