使用strptime和as.Date更改r中的日期格式

时间:2016-07-02 20:48:30

标签: r date strptime as.date

以下是我的数据的一部分:

       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一起工作正常,但对于上述数据集,它无效。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

问题与您的区域设置有关。如果你看?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"

注意,因为&#34; 02&#34;,&#34; 1月&#34;之间有空格。和&#34; 2010&#34;,您需要在%d%B%Y之间留出空格。因此,请不要在帖子中使用"%d%B%Y",而是使用"%d %B %Y"