更改R中的日期格式

时间:2014-01-30 08:25:19

标签: r date format

我有一个日期列的数据格式为:月/日/年(从1961年1月1日到2010年12月31日),这里只写了一部分。

1/1/1961    0.0 
1/2/1961    4.5 
1/3/1961    1.7  
1/4/1961    0.0

但我希望日期格式为:day.month.year

01.01.1961  0.0
02.01.1961  4.5 
03.01.1961  1.7 
04.01.1961  0.0

我试试这个,但没有好结果:

    data$date <- format(as.Date(data$date), "%d.%m.%Y")

2 个答案:

答案 0 :(得分:3)

> df <- data.frame(date=c("1/1/1961", "1/2/1961", "1/3/1961 " ,"1/4/1961" ), 
+                                         mid=c(0.0,4.5,1.7,0.0))
> df
       date mid
1  1/1/1961 0.0
2  1/2/1961 4.5
3 1/3/1961  1.7
4  1/4/1961 0.0
> df$newdate <- strptime(as.character(df$date), "%d/%m/%Y")
> df$txtdate <- format(df$newdate, "%m.%d.%Y")
> df
       date mid    newdate    txtdate
1  1/1/1961 0.0 1961-01-01 01.01.1961
2  1/2/1961 4.5 1961-02-01 02.01.1961
3 1/3/1961  1.7 1961-03-01 03.01.1961
4  1/4/1961 0.0 1961-04-01 04.01.1961 

或使用:

> df <- data.frame(date=c("1/1/1961", "1/2/1961", "1/3/1961 " ,"1/4/1961" ), 
+                                                         mid=c(0.0,4.5,1.7,0.0))
> format(as.Date(df$date, format = "%d/%m/%Y"), "%d.%m.%Y")
[1] "01.01.1961" "01.02.1961" "01.03.1961" "01.04.1961"
> format(as.Date(df$date, format = "%d/%m/%Y"), "%m.%d.%Y")
[1] "01.01.1961" "02.01.1961" "03.01.1961" "04.01.1961"

答案 1 :(得分:0)

检查format中的as.Date参数。 “[I]t will try "%Y-%m-%d" then "%Y/%m/%d”。由于您的日期格式不同(%m/%d/%Y),因此您需要指定输入格式,以使as.Date正确识别不同的时间组件。

date <- as.Date("1/1/1961", format = "%m/%d/%Y")
format(date, "%d.%m.%Y")
# [1] "01.01.1961"