0

以下是我的部分数据:

       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"。类datacharacter,我尝试如下:

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,但对于上述数据集它不起作用。任何的想法?

4

1 回答 1

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"

请注意,由于“02”、“1 月”和“2010”之间有一个空格,因此您需要在%d%B、之间留一个空格%Y。所以,不要使用"%d%B%Y"as put in your post,而是使用"%d %B %Y".

于 2016-07-02T21:27:59.987 回答