2013-06-27 34 views
3

我是一個新用戶,我需要一個律幫助 我DF看起來像這樣添加缺失年份?

  y   v 
1 2000  1 
2 2003  3 
3 2005  3 
4 2006  6 
5 2009  1 
6 2011  1 
7 2013  3 

我想補充一點,不幾年間載體出現,把它放在0的是approriate V值年。像2001,2002 .. 一樣;

  y   v 
1 2000  1 
2 2001  0 
3 2002  0 
4 2003  3 
5 2004  0 
6 2005  3 

我第一次嘗試是使用庫代上

這裏是我的代碼來創建另一個向量,

yy <- seq.dates(from="01/01/2000", to="12/31/2013", by="years") 
yy <- as.POSIXct(yy, f="%Y") 
yy <- format(yy, f ="%Y") 
pp <- rep(0, length=14) 
yp <- data.frame(cbind(yy, pp)) 

,但因爲它們不具有相同的長度,我不能代替當他們幾年的時候,從DF到yp的值是相同的!

在此先感謝

回答

5

您可以使用merge此:

DF <- read.table(text="   y   v 
1 2000  1 
2 2003  3 
3 2005  3 
4 2006  6 
5 2009  1 
6 2011  1 
7 2013  3",header=TRUE) 

DF <- merge(DF, 
      data.frame(y=seq.int(min(DF$y),max(DF$y))), 
      by="y",all=TRUE) 
DF$v[is.na(DF$v)] <- 0 #assuming you have no other NA values 

head(DF) 
#  y v 
# 1 2000 1 
# 2 2001 0 
# 3 2002 0 
# 4 2003 3 
# 5 2004 0 
# 6 2005 3 
+0

是這個作品,謝謝! – Simplytif

0

或者match可能是另一種方式......

yseq <- min(DF$y):max(DF$y) 
df2 <- data.frame(y = yseq , v = numeric(length(yseq))) 
df2$v[ match(DF$y , df2$y) ] <- DF$v 

head(df2) 
# y v 
#1 2000 1 
#2 2001 0 
#3 2002 0 
#4 2003 3 
#5 2004 0 
#6 2005 3