2010-05-14 93 views
21

想更改日期格式。我的數據框如下所示,並希望將所有日期格式更改爲"%d/%m/%Y"將日期格式更改爲「%d /%m /%Y」

DF:

id bdate  wdate  ddate 
1 09/09/09 12/10/09  2009-09-27 
+3

它幾乎取決於你實際上在你的'data.frame'。這個字段是'Date','character','factor'嗎?如果你想改變'data.frame'的打印方式,那麼你可以重載一個'print'方法('print.Date'或'print.POSIXlt')。 – Marek 2010-05-14 10:15:33

+0

嗨馬雷克, 這些是日期! Bazon – Bazon 2010-05-17 03:06:43

回答

14
df$ddate<-strftime(df$ddate,"%d/%m/%Y") 
df$bdate<-strftime(strptime(df$bdate,"%d/%m/%y"),"%d/%m/%Y") 
df$wdate<-strftime(strptime(df$wdate,"%d/%m/%y"),"%d/%m/%Y") 
29
df$ddate <- format(as.Date(df$ddate), "%d/%m/%Y") 
2

默認R作用是把字符串作爲因素。當然,個別設置可能與默認值不同。將變量值更改爲character,然後將其轉換爲date是一種很好的做法。我經常使用chron軟件包 - 它很好,很簡單,而且最重要的是它能完成這項工作。只有這個軟件包的缺點在於時區處理。

如果您沒有安裝chron做,這樣做:

install.packages("chron") 
# load it 
library(chron) 
# make dummy data 
bdate <- c("09/09/09", "12/05/10", "23/2/09") 
wdate <- c("12/10/09", "05/01/07", "19/7/07") 
ddate <- c("2009-09-27", "2007-05-18", "2009-09-02") 
# notice the last argument, it will not allow creation of factors! 
dtf <- data.frame(id = 1:3, bdate, wdate, ddate, stringsAsFactors = FALSE) 
# since we have characters, we can do: 
foo <- transform(dtf, bdate = chron(bdate, format = "d/m/Y"), wdate = chron(wdate, format = "d/m/Y"), ddate = chron(ddate, format = "y-m-d")) 
# check the classes 
sapply(foo, class) 
# $id 
# [1] "integer" 

# $bdate 
# [1] "dates" "times" 

# $wdate 
# [1] "dates" "times" 

# $ddate 
# [1] "dates" "times" 

花蓮CA ...它應該做的伎倆......

相關問題