Tal y como hemos visto en el Anexo 1: Pretratamiento de los datos, al seleccionar los productos concretos que queríamos incluir en el conjunto de datos vimos que había gran cantidad de registros faltantes en algunos meses. Es por esto que procederemos a su imputación. Lo que haremos será, para los meses en los que no hay registro de un determinado producto, tomar como dato el registro de ese mismo producto en el mes anterior.

imputar = read.csv('/home/silvia/000UNI/VIS/datos2/01datos_cesta_carrefour.csv')
imputar$month2 = as.Date(paste('15-',imputar$month), format = '%d-%m-%Y')
x = imputar$month2[!duplicated(imputar$month2)]

productos = imputar$name[!duplicated(imputar$name)]
date = min(x)

date_string = str_replace(paste(substr(date, start = 6, stop = 7), substr(date, start = 1, stop = 4)), ' ', '-')

d = data.frame()

lista_date = c()
while (date < '2022-12-15') {
  lista_date = c(lista_date, str_replace(paste(substr(date, start = 6, stop = 7), substr(date, start = 1, stop = 4)), ' ', '-'))
  date = date + 30
}



for (prod in productos) {
  i = 1
  if (nrow(imputar[(imputar$name == prod & imputar$month == lista_date[1]),])>0) {
    d = rbind(d, imputar[(imputar$name == prod & imputar$month == lista_date[1]),])
  }
  else {
    X = NA
    name = prod
    month = lista_date[1]
    supermarket = imputar[imputar$name == prod,][1,]$supermarket
    category = imputar[imputar$name == prod,][1,]$category
    reference_unit = imputar[imputar$name == prod,][1,]$reference_unit
    mean_price = NA
    mean_ref_price = NA
    cesta_carrefour = imputar[imputar$name == prod,][1,]$cesta_carrefour
    alternative_category = imputar[imputar$name == prod,][1,]$alternative_category
    month2 = imputar[imputar$name == prod,][1,]$month2
    x = data.frame(X, month, name, supermarket, category, reference_unit, mean_price, mean_ref_price, cesta_carrefour, alternative_category, month2)
    d = rbind(d, x)
    
  }
  for (fecha in lista_date[2:length(lista_date)]) {
    anterior = lista_date[i]
    if (nrow(imputar[(imputar$name == prod & imputar$month == fecha),]) > 0) {
      d = rbind(d, imputar[(imputar$name == prod & imputar$month == fecha),])
    }
    else {
      imp = d[(d$name == prod & d$month == anterior),]
      imp$month = fecha
      d = rbind(d, imp)
    }
    i = i+1
  }
}

Una vez hecho esto, contamos ya con nuestro dataset final, que tiene un total de 3.243 observaciones y 9 variables.