2012-11-06 123 views
2

我需要將字符日期「2008-1-1」轉換爲數字20080101,但我得到的是200811,有沒有人可以幫助我呢?非常感謝你。這是我的代碼:R月份和日期兩位數的日期格式

year <- c(2008:2012) 
mth <- c(1:5) 
day <- c(1:5) 
A <- data.frame(cbind(year,mth,day)) 
date.ch <- as.character(with(A, paste(year, mth, day, sep="-"))) 
date.n <- as.numeric(with(A, paste(year, mth, day, sep=""))) 
+0

您可能不得不使用'sprintf'來做到這一點。 – Andrie

回答

7

您可以使用as.numeric(format(as.Date(date.ch), '%Y%m%d'))

[1] 20080101 20090202 20100303 20110404 20120505 
+0

非常感謝!!!!!! – Rosa

3

正如@Andrie提到,sprintf是一個不錯的功能:

with(A, as.numeric(sprintf("%i%02i%02i", year, mth, day))) 
# [1] 20080101 20090202 20100303 20110404 20120505 

由於@mplourde在這點已經消失在乙醚,如果你只有一個意見指出date.ch對象,你可以

as.numeric(strftime(date.ch, format = "%Y%m%d")) 
+0

@mplourde,啊,是的。我知道我有兩個理由贊成你的答案。 – BenBarnes

+0

仍然可能有助於她看到'sprintf'如何工作... –

+0

@BenBarnes:謝謝! – Rosa

1

簡單的乘法和加法如何?

A <- data.frame(cbind(year=rep(2008:2011,6),mth=rep(1:12,2),day=1:24)) 
with(A, year*1e4 + mth*1e2 + day) 
+0

有趣,謝謝 – Rosa

相關問題