2

我需要将字符日期“2008-1-1”转换为数字 20080101,但我得到的是 200811,有人可以帮我吗?非常感谢你。这是我的代码:

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

3 回答 3

10

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

[1] 20080101 20090202 20100303 20110404 20120505
于 2012-11-06T21:21:26.433 回答
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"))
于 2012-11-06T21:13:40.343 回答
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)
于 2012-11-06T21:33:56.577 回答