2014-01-30 70 views
0

我有这种格式的日期列的数据:月/日/年(从1/1/1961到2010年12月31日),这里只是其中的一部分被写入。在R中更改日期格式

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") 

回答

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" 
+0

谢谢,非常好。但我忘记提及我的数据是从1/1/1961持续到2010年12月31日,并且你的指令一直工作到每个月的第12天。任何想法??? – user3054327

+0

在'as.Date'中,将'format =“%d /%m /%Y”'更改为'format =“%m /%d /%Y”' – Henrik

+0

是的,,,非常感谢, – user3054327

0

检查as.Date中的format参数。 “[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"