添加缺失的年份?

时间:2013-06-27 15:18:30

标签: r

我是新用户,我需要帮助 我的df看起来像这样

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

我想要添加几年没有出现在年份矢量中的年份,并将它的适当v值设为0。像2001,2002 ..  例如;

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

我的第一次尝试是使用库chron创建另一个向量

这是我的代码,

 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!

提前致谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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