2014-10-27 4 views
2

Я хотел бы преобразовать столбец (или создать новый), который составляет год-год года, к m/d/y. Первоначально у меня был год и день года как две отдельные колонки, но я объединил их (вставлял), потому что я думал, что мне понадобится год, включенный в день года из-за високосных лет. Я не против использования дополнительного пакета, такого как date.convert year-doy to mdy

Вот мои данные:

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

ответ

4

Нет дополнительных пакетов необходимо:

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

Это довольно гладкий –

+0

простой и эффективный, спасибо @Matthew – cherrytree

0

Что-то вроде этого работает.

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

Просто добавляет день года (минус один) к 1 января года.