我有一个日期列的数据格式为:月/日/年(从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")
答案 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"