我有一个数据框,其中包含商品的日期,位置和价格。对于特定日期,有多个位置(此处为13个);因此,对于每个日期位置对,都有13行,即Date1-Loc1,Date1-Loc2 .... Date1-Loc13,Date2-Loc1 ... Date2-Loc13,依此类推。
“日期”列包含2015年1月2日至2018年10月22日之间的数据。缺少价格缺少的“日期位置”对,因此我需要使用前几天基于位置的价格填充它们。
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/>
我需要将2015年1月3日-Loc1对的价格填充到2015年1月2日-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
在这里考虑这样一个事实,即存在日期-日期对,而对于某些日期,价格缺失,如示例所示。
library(lubridate)
library(dplyr)
date3=date[rep(seq_len(nrow(date)), each=13),]
newdata2=newdata %>%
mutate(price=ifelse(is.na(price),date3-days(1),
??))
请帮助。预先感谢!