重复的数据和日期

时间:2013-10-04 15:36:46

标签: r date

我对R有点新手我有两个问题。我有一个数据框,比如FruitsNew

   Fruit 
1 Apples
2 Oranges
3 Bananas

Q1)我想复制数据,并将从2000年5月31日开始的月度日期添加到上面,例如

   Fruit  date
1 Apples  2000-05-31  
2 Oranges 2000-05-31
3 Bananas 2000-05-31
4 Apples  2000-06-30
5 Oranges 2000-06-30
6 Bananas 2000-06-30

依旧......

Q2)获得上述内容后,我将其与Sales数据集合并,该数据集仅在每年5月底提供,所以它看起来像这样

  Fruit   date          sales
1 Apples  2000-05-31    1000
2 Oranges 2000-05-31     
3 Bananas 2000-05-31    500    
4 Apples  2000-06-30
5 Oranges 2000-06-30
6 Bananas 2000-06-30
...
7 Apples  2001-05-31    2000   
8 Oranges 2001-05-31    200
9 Bananas 2001-05-31    600

橙子没有销售,但是我想在2000年5月31日之间的所有月度日期和下一个可用的销售数据中填写0,该数据发生在05/31/2001 其他水果应该在05/31/2000和05/31/2001之间具有相同的销售数字,依此类推。

上面只是一个例子,但如果缺少填写以前可用的日期销售数字,如果之前的可用日期为空则填写0

像这样的东西

  Fruit   date           sales
1 Apples  2000-05-31     1000    
2 Oranges 2000-05-31     0
3 Bananas 2000-05-31     500    
4 Apples  2000-06-30     1000
5 Oranges 2000-06-30     0
6 Bananas 2000-06-30     500
7 Apples  2001-05-31     2000   
8 Oranges 2001-05-31     200
9 Bananas 2001-05-31     600

1 个答案:

答案 0 :(得分:0)

假设您的第一个数据框名为core,第二个数据框名为merg.yr

merg.yr <- merge(core, year.sale, by.x=1:2, by.y=1:2, all.x=TRUE)
merg.yr[is.na(merg.yr)] <- 0

要构建core df,我想出了一种方法,该方法在第一个月创建日期,然后从每个月中减去1以获得上个月的最后日期。然后我重复每一次三次,让`data.frame函数填入水果:

core <- data.frame(fruit =c('Apples','Oranges','Bananas'), 
                  date=rep( as.Date(seq(ISOdate(2000, 6,1), 
                                        ISOdate(2001,6,1), by='month')) -1,
                            each=3)
                  )