我正在嘗試將Date列轉換為日期格式,但我不斷收到錯誤訊息。我認為問題可能是日期是一個字符并且在年份之前有一個 X:
HMC.Close Date
1 39.71 X2007.01.03
2 40.04 X2007.01.04
3 38.67 X2007.01.05
4 38.89 X2007.01.08
5 38.91 X2007.01.09
6 37.94 X2007.01.10
這是我一直在運行的代碼:
stock_honda <- expand.grid("HMC" = HMC$HMC.Close) %>%
"Date" = as.Date(row.names(as.data.frame(HMC))) %>%
subset(Date >"2021-02-28" & Date < "2022-03-11")
charToDate(x) 中的錯誤:字串不是標準的明確格式
uj5u.com熱心網友回復:
您可以使用gsub先洗掉導致問題的“X”,然后使用ymdfrom lubridatepackage 將字串轉換為日期。此外,您可以使用mutate(across(...))fromdplyr包進行轉換,以整潔的方式完成所有操作。
library(dplyr)
library(lubridate)
df |>
# Mutate Date to remove X and convert it to Date
mutate(across(Date, function(x){
ymd(gsub("X","", x))
}))
# HMC.Close Date
#1 39.71 2007-01-03
#2 40.04 2007-01-04
#3 38.67 2007-01-05
#4 38.89 2007-01-08
#5 38.91 2007-01-09
#6 37.94 2007-01-10
uj5u.com熱心網友回復:
這是一個避免在日期前添加“X”的管道:
library(quantmod)
getSymbols(c("FCAU.VI", "TYO", "VWAGY", "HMC"), na.rm = TRUE)
library(tidyverse)
stock_honda <- (HMC
%>% as.data.frame()
%>% rownames_to_column("Date")
%>% select(Date, HMC.Close)
%>% mutate(across(Date, lubridate::ymd))
%>% filter(between(Date, as.Date("2021-02-28"), as.Date("2022-03-11")))
)
如果有一個版本between可以避免顯式轉換為日期的需要,那就太好了。(filter("2021-02-28" < Date, Date < "2022-03-11")也適用于最后一步。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/451464.html
