2013-10-04 52 views
0

我有點新手到R我有兩個問題。我有一個數據幀,說FruitsNew重複的數據和日期

Fruit 
1 Apples 
2 Oranges 
3 Bananas 

Q1)我要複製的數據,並添加啓動從31月 - 2000年以上的每月日期,例如

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)之後,我獲得上述,我用銷售數據集,則僅可每年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 
進行合併

桔子沒有銷售,但是我希望在05/31/2000和05/31/2001發生的下一個可用銷售數據之間的所有月份日期填充爲0 其他水果在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 
+0

銷售數據框是什麼樣的? – mrip

+0

你能告訴我們你試過的東西嗎?乾杯。 – Henrik

回答

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 

卜ild 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) 
       )