2013-06-27 30 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