以下是我的部分数据:
Date Elev Temp.C
1 02 January 2010 200 14.7
2 02 January 2010 300 5
3 02 January 2010 500 -2
4 02 January 2010 1000 -9.8
5 02 January 2010 2000 -7.1
我想将日期的格式更改为2010-01-01
或"%Y-%m-%d"
。data
的类别是character
,我尝试如下:
data$Date<-as.Date(data$Date,format="%d%B%Y")
data$Date<-as.Date(data[["Date"]],"%d%B%Y")
data$Date<-strptime(data$Date,"%d%B%Y")
上述所有试验都在日期列中显示<NA>
。我有另一个"%m/%d/%Y"
日期格式的数据文件,它与strptime
一起工作得很好,但对于上述数据集,它不起作用。任何想法?
问题与您的区域设置有关。如果您查看?strptime
,您将看到:
‘%B’ Full month name in the current locale. (Also matches
abbreviated name on input.)
这意味着%B
对您的区域设置很敏感。如果您不确定语言环境是什么,请查看?locales
。当我问你Sys.getlocale("LC_TIME")
的输出,你说你得到了"English_United States.1252"
。现在让我们首先更改区域设置:
Sys.setlocale("LC_TIME", "C")
那么做:
as.Date("02 January 2010", "%d %B %Y")
# [1] "2010-01-02"
注意,由于"02","January"one_answers"2010"之间有一个空格,所以需要在%d
, %B
, %Y
之间留下一个空格。所以,不要在你的文章中使用"%d%B%Y"
,而是使用"%d %B %Y"
。