all set-up to prepare ultimate test before last reports
[talweg.git] / data / scripts / fill_NAs.R
diff --git a/data/scripts/fill_NAs.R b/data/scripts/fill_NAs.R
new file mode 100644 (file)
index 0000000..72af4cb
--- /dev/null
@@ -0,0 +1,46 @@
+fill_NAs = function(file)
+{
+       dat_with_date = read.csv(file)
+       dat = dat_with_date[,-1] #get rid of date column
+
+       line = 1
+       n = nrow(dat)
+       p = ncol(dat)
+       last_noNA_indices = rep(0, p)
+       while (line <= n)
+       {
+#              print(line)
+               for (i in 1:p)
+               {
+#                      if (is.numeric(dat[line,i]))
+                       if (!is.na(dat[line,i]))
+                       {
+                               if (last_noNA_indices[i] < line-1)
+                               {
+                                       #do some completion
+                                       meanVal = ifelse(last_noNA_indices[i]>0,
+                                                                                                0.5*(dat[last_noNA_indices[i],i]+dat[line,i]),
+                                                                                                dat[line,i])
+
+                                       for (j in (last_noNA_indices[i]+1):(line-1))
+                                               dat[j,i] = meanVal
+                               }
+                               last_noNA_indices[i] = line
+                       }
+               }
+               line = line + 1
+       }
+
+       #complete until end if needed
+       for (i in 1:p)
+       {
+               if (last_noNA_indices[i] < n)
+               {
+                       for (j in (last_noNA_indices[i]+1):n)
+                               dat[j,i] = dat[last_noNA_indices[i],i]
+               }
+       }
+
+       dat_with_date[,2:(p+1)] = dat
+       write.csv(dat_with_date, "NONA.csv", row.names=FALSE)
+}