2013-10-04 8 views
0

Я немного новичок для R У меня два вопроса. У меня есть dataframe, скажем 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) После того, как я получаю выше, я объединить его с продаж набора данных, который доступен только раз в год в конце мая, так это выглядит, как этот

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 

Апельсины не имеют продаж, но я хотел бы заполнить его 0 для всех ежемесячных дат между 05/31/2000 и следующими доступными данными о продажах, которые происходят в 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 
+0

Какова структура кадра данных продаж? – mrip

+0

Не могли бы вы показать нам, что вы пробовали. Приветствия. – Henrik

ответ

0

Давайте предположим, что ваш первый dataframe будет называться core и ваш второй dataframe имени 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) 
       ) 
Смежные вопросы