R日期格式,月和日为两位数

R日期格式,月和日为两位数,r,R,我需要将字符日期“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 <- a

我需要将字符日期“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="")))

year正如@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"))

您可以使用
as.numeric(格式为as.Date(Date.ch),“%Y%m%d”)


简单的乘法和加法怎么样

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

A您可能必须使用
sprintf
来执行此操作。@mplourde,啊,是的。我知道我投票支持你的答案有两个原因。
A <- data.frame(cbind(year=rep(2008:2011,6),mth=rep(1:12,2),day=1:24))
with(A, year*1e4 + mth*1e2 + day)