У меня есть фрейм данных, который содержит дату, местоположение и цену товара.Для определенной даты есть несколько мест (здесь 13 в количестве);следовательно, для каждой пары дата-местоположение имеется 13 строк, то есть Date1-Loc1, Date1-Loc2 .... Date1-Loc13, Date2-Loc1 ... Date2-Loc13 и т. д. комбинации в виде строк.
Столбец «Дата» содержит данные со 2 января 2015 года по 22 октября 2018 года. Существует несколько пар «Местоположение даты», для которых отсутствует цена, поэтому мне необходимо заполнить их ценой, основанной на местоположении предыдущих дней.
For example
Date Location Price
02-01-2015 Loc1 32000 <br/>
02-01-2015 Loc2 33452 <br/>
02-01-2015 Loc3 30000 <br/>
....upto 02-01-2015 Loc13 32100<br/>
03-01-2015 Loc1 NA <br/>
03-01-2015 Loc2 NA
.....03-01-2015 Loc13 NA<br/>
Мне нужно заполнить цену 3 января 2015 года - пара Loc1 ценой 2 января 2015 года - пара Loc1, т.е. 32000.Я написал следующий фрагмент кода, но я застрял на данный момент: Воспроизводимый код:
## by month
date=as.data.frame(seq(as.Date("2015/1/2"),as.Date("2015/10/22"),by = "day"))
tail(date)
#repeating rows for "date" in R
date2=as.data.frame(date[rep(seq_len(nrow(date)), each=13),])
colnames(date2)="x"
loc=c("Loc1", "Loc2", "Loc3",
"Loc4", "Loc5", "Loc6", "Loc7",
"Loc8", "Loc9", "Loc10",
"Loc11", "Loc12", "Loc13")
#repeating rows for "loc" in R
loc2=as.data.frame(rep(loc,times=1390))
#data binding
date_loc=cbind(date2,loc2)
names(date_loc)
colnames(date_loc)=c("publish_date","location")
#adding the price
price=runif(294, min=0, max=40000)
Df=cbind(date_loc,price)
Df$price[c(27:39,118:130)] <- NA
Здесь рассмотрим тот факт, что пары date-locwise присутствуют и для нескольких дат цена отсутствует, как показанов примере.
library(lubridate)
library(dplyr)
date3=date[rep(seq_len(nrow(date)), each=13),]
newdata2=newdata %>%
mutate(price=ifelse(is.na(price),date3-days(1),
??))
Пожалуйста, помогите.Заранее спасибо!