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

Changing the date format in r with strptime and 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 的 Class 是 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"和“2010”之间有一个空的space,所以需要在%d之间留一个空的space, %B%Y。所以,不要像 post 中那样使用 "%d%B%Y",而是使用 "%d %B %Y".