【问题标题】:Impossible to change date from factor to date format and I dont know why无法将日期从因子更改为日期格式,我不知道为什么
【发布时间】:2021-10-08 21:08:52
【问题描述】:

我尝试将日期变量从因子格式更改为日期格式,但我不能,我也不知道为什么。

这是我的代码

temp_tot <-read.csv("temp_total_030820.csv",header=TRUE,sep=",",na.strings=".", stringsAsFactors=FALSE)
class(temp_tot$date)#character
temp_tot$date<-as.Date(temp_tot$date,format="%m/%d/%y")#returning N.A

这是我的数据输出

structure(list(X = 1L, capteur = "30-01-s.", Year = 2021L, jj = 1L, 
               variable = "tmax", value = 0.517166666666667, dpt = "Aigoual", 
               pos = "sol", date = "2021-01-01"), row.names = 1L, class = "data.frame")

我尝试了很多功能,但我不知道我卡在哪里了。跟“Locale”有关系吗?

谢谢!

【问题讨论】:

    标签: r date format


    【解决方案1】:

    strptime 的值部分的深处,我们发现If the specified time is invalid (for example ‘"2010-02-30 08:00"’) all the components of the result are ‘NA’. 该日期与您的日期相似,我们猜测有效日期(作为输入)将变为 %m%d%Y 或 %d%m%是的:

    splits <- strsplit(temp_tot$date, '-')[[1]]
    reversed <- rev(splits)
    my_valid_date <- as.Date(paste(reversed[1], reversed[2], reversed[3], sep='/'))
    class(my_valid_date)
    [1] "Date"
    
    

    我不知道您使用的是欧洲日期格式还是美国日期格式,所以我把它留给您。从 01-01 开始是模棱两可的,并且可能会影响您将颠倒部分放在上面的顺序。高温

    【讨论】:

    • 感谢您的回答。我的情况的正确格式是“%d%m%Y”。但我真的不明白初始格式如何不能被识别为日期。在我使用的原始脚本中,我可以使用以下行创建一个日期: "m_j_table$date=as.POSIXct(strptime(paste(m_j_table$Year,m_j_table$jj,sep="_"),"%Y_%j") )”。那怎么可能呢?再次感谢你的帮助。我正在尝试使用您的代码,但“as.date”不起作用,这是错误:“charToDate(x) 中的错误:字符串不是标准的明确格式”。我做错了什么?
    • 我只能建议你告诉我你这次输入了什么,而不是之前。有关八年来standard unambiguous date 和 211k 浏览量的精彩困惑的概述。
    • 当然很抱歉,这是我输入的内容:“splits
    • 是的,对不起,我的终端剪切和粘贴错误,strsplit 上的)[[1]] 取出列表返回并允许以下粘贴正常工作。见编辑。
    • 我刚刚尝试使用 as.date.character 并且它工作我的变量现在是日期格式。所以 %Y %m %d 格式可以使用 as.date 但不能使用 strptime ?
    猜你喜欢
    • 2019-10-02
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多