将year-doy转换为mdy

时间:2014-10-27 18:33:54

标签: r date

我想将一年中的年份(或创建一个新的)转换为m / d / y。最初我把年份和年份作为两个单独的列,但我将它们连接在一起(粘贴),因为我认为由于闰年,我需要将年份包含在一年中。我不反对使用date等其他软件包。

这是我的数据:

dat <- structure(list(doy = c(320, 350, 309, 310, 328, 321, 301, 338, 
304, 304, 308), year = structure(1:11, .Label = c("2000", "2001", 
"2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", 
"2010"), class = "factor"), conc = c("2000-320", "2001-350", 
"2002-309", "2003-310", "2004-328", "2005-321", "2006-301", "2007-338", 
"2008-304", "2009-304", "2010-308")), row.names = c(NA, -11L), class = "data.frame", .Names = c("doy", 
"year", "conc"))

看起来像:

   doy year     conc
1  320 2000 2000-320
2  350 2001 2001-350
3  309 2002 2002-309
4  310 2003 2003-310
5  328 2004 2004-328
6  321 2005 2005-321
7  301 2006 2006-301
8  338 2007 2007-338
9  304 2008 2008-304
10 304 2009 2009-304
11 308 2010 2010-308

-cherrytree

2 个答案:

答案 0 :(得分:4)

无需额外的套餐:

within(dat, dtime <- as.POSIXct(conc, format='%Y-%j'))

答案 1 :(得分:0)

像这样的东西。

as.Date( paste(as.character(dat$year), "-01-01",sep="")) + dat$doy - 1

只需将年中的一天(减一)添加到一年的1月1日。