我正在尝试将因子矢量转换为R中的日期向量。我知道关于这个主题有很多问题,但是我找不到关于如何转换这种特定类型的向量的答案。
数据和我的尝试如下:
dates <- c(1/4/2005, 1/5/2005, 1/6/2005, 1/7/2005, 1/8/2005, 1/9/2005, 1/10/2005)
class(dates)
"factor"
dates <- as.character(dates)
class(dates)
"character"
然后我尝试了两种方法,使用以下方法将此字符串格式转换为日期格式:
dates <- as.date(dates) #This converts the vector to 0001-04-20, 0001-11-20, NA, NA, 0002-01-20,..
dates <- strptime(dates, "%m/%d/%y") #This converts the vector to 2020-01-04, 2020-01-02, ...
我认为这是因为日期列保存了每个月和每天的单个数字,例如白天为“1”而不是“01”,当天为“5”而不是“05”。有没有办法将此字符向量转换为正确的日期格式?谢谢。
答案 0 :(得分:0)
问题1:您的日期是数字,即1/4/2005等于(1/4)/ 2005 = 1.24E-4
问题2:您需要4个数字年的“%Y”(%y是2位数年)
这应该有效:
dates <- c("1/4/2005", "1/5/2005", "1/6/2005", "1/7/2005", "1/8/2005", "1/9/2005", "1/10/2005")
strptime(dates, "%m/%d/%Y")
答案 1 :(得分:0)
我假设您的日期是短日期格式(可能来自Excel),这是我从大多数时间将数据从excel导出到csv并通过read.csv读入R时遇到的。
dates <- c("1/4/2005", "1/5/2005", "1/6/2005", "1/7/2005", "1/8/2005")
df <- data.frame(dates = dates) # emulate df = read.csv(file)
然后,您希望通过
将日期列添加到dfdf$Date <- as.Date(df$dates, format="%m/%d/%Y")
df
dates Date
1 1/4/2005 2005-01-04
2 1/5/2005 2005-01-05
3 1/6/2005 2005-01-06
4 1/7/2005 2005-01-07
5 1/8/2005 2005-01-08
然后,您可以使用Date列进行时间序列操作,例如通过xts。