Skip to contents

Interpolate time series with error handling

Usage

interpolate_time_series(
  data,
  value_columns,
  target_days,
  method = "linear",
  fill_na_method = "extend",
  validate_input = TRUE
)

Arguments

data

Data frame with Day column and value columns

value_columns

Vector with names of columns to interpolate

target_days

Vector of target days

method

Interpolation method ("linear", "constant", "spline")

fill_na_method

Method to fill missing values ("extend", "zero", "mean")

validate_input

Validate input structure, default TRUE

Value

A data.frame with one row per element of target_days. The first column is Day (integer). Subsequent columns correspond to value_columns, each containing the interpolated numeric values at the requested days. NA values are resolved according to fill_na_method: "extend" fills with the nearest valid value, "zero" replaces with 0, and "mean" uses the column mean.

Examples

temp_data <- data.frame(Day = c(1, 100, 200, 365),
                        Temperature = c(5, 15, 18, 7))
interpolate_time_series(temp_data, value_columns = "Temperature",
                        target_days = 1:365)
#>     Day Temperature
#> 1     1    5.000000
#> 2     2    5.101010
#> 3     3    5.202020
#> 4     4    5.303030
#> 5     5    5.404040
#> 6     6    5.505051
#> 7     7    5.606061
#> 8     8    5.707071
#> 9     9    5.808081
#> 10   10    5.909091
#> 11   11    6.010101
#> 12   12    6.111111
#> 13   13    6.212121
#> 14   14    6.313131
#> 15   15    6.414141
#> 16   16    6.515152
#> 17   17    6.616162
#> 18   18    6.717172
#> 19   19    6.818182
#> 20   20    6.919192
#> 21   21    7.020202
#> 22   22    7.121212
#> 23   23    7.222222
#> 24   24    7.323232
#> 25   25    7.424242
#> 26   26    7.525253
#> 27   27    7.626263
#> 28   28    7.727273
#> 29   29    7.828283
#> 30   30    7.929293
#> 31   31    8.030303
#> 32   32    8.131313
#> 33   33    8.232323
#> 34   34    8.333333
#> 35   35    8.434343
#> 36   36    8.535354
#> 37   37    8.636364
#> 38   38    8.737374
#> 39   39    8.838384
#> 40   40    8.939394
#> 41   41    9.040404
#> 42   42    9.141414
#> 43   43    9.242424
#> 44   44    9.343434
#> 45   45    9.444444
#> 46   46    9.545455
#> 47   47    9.646465
#> 48   48    9.747475
#> 49   49    9.848485
#> 50   50    9.949495
#> 51   51   10.050505
#> 52   52   10.151515
#> 53   53   10.252525
#> 54   54   10.353535
#> 55   55   10.454545
#> 56   56   10.555556
#> 57   57   10.656566
#> 58   58   10.757576
#> 59   59   10.858586
#> 60   60   10.959596
#> 61   61   11.060606
#> 62   62   11.161616
#> 63   63   11.262626
#> 64   64   11.363636
#> 65   65   11.464646
#> 66   66   11.565657
#> 67   67   11.666667
#> 68   68   11.767677
#> 69   69   11.868687
#> 70   70   11.969697
#> 71   71   12.070707
#> 72   72   12.171717
#> 73   73   12.272727
#> 74   74   12.373737
#> 75   75   12.474747
#> 76   76   12.575758
#> 77   77   12.676768
#> 78   78   12.777778
#> 79   79   12.878788
#> 80   80   12.979798
#> 81   81   13.080808
#> 82   82   13.181818
#> 83   83   13.282828
#> 84   84   13.383838
#> 85   85   13.484848
#> 86   86   13.585859
#> 87   87   13.686869
#> 88   88   13.787879
#> 89   89   13.888889
#> 90   90   13.989899
#> 91   91   14.090909
#> 92   92   14.191919
#> 93   93   14.292929
#> 94   94   14.393939
#> 95   95   14.494949
#> 96   96   14.595960
#> 97   97   14.696970
#> 98   98   14.797980
#> 99   99   14.898990
#> 100 100   15.000000
#> 101 101   15.030000
#> 102 102   15.060000
#> 103 103   15.090000
#> 104 104   15.120000
#> 105 105   15.150000
#> 106 106   15.180000
#> 107 107   15.210000
#> 108 108   15.240000
#> 109 109   15.270000
#> 110 110   15.300000
#> 111 111   15.330000
#> 112 112   15.360000
#> 113 113   15.390000
#> 114 114   15.420000
#> 115 115   15.450000
#> 116 116   15.480000
#> 117 117   15.510000
#> 118 118   15.540000
#> 119 119   15.570000
#> 120 120   15.600000
#> 121 121   15.630000
#> 122 122   15.660000
#> 123 123   15.690000
#> 124 124   15.720000
#> 125 125   15.750000
#> 126 126   15.780000
#> 127 127   15.810000
#> 128 128   15.840000
#> 129 129   15.870000
#> 130 130   15.900000
#> 131 131   15.930000
#> 132 132   15.960000
#> 133 133   15.990000
#> 134 134   16.020000
#> 135 135   16.050000
#> 136 136   16.080000
#> 137 137   16.110000
#> 138 138   16.140000
#> 139 139   16.170000
#> 140 140   16.200000
#> 141 141   16.230000
#> 142 142   16.260000
#> 143 143   16.290000
#> 144 144   16.320000
#> 145 145   16.350000
#> 146 146   16.380000
#> 147 147   16.410000
#> 148 148   16.440000
#> 149 149   16.470000
#> 150 150   16.500000
#> 151 151   16.530000
#> 152 152   16.560000
#> 153 153   16.590000
#> 154 154   16.620000
#> 155 155   16.650000
#> 156 156   16.680000
#> 157 157   16.710000
#> 158 158   16.740000
#> 159 159   16.770000
#> 160 160   16.800000
#> 161 161   16.830000
#> 162 162   16.860000
#> 163 163   16.890000
#> 164 164   16.920000
#> 165 165   16.950000
#> 166 166   16.980000
#> 167 167   17.010000
#> 168 168   17.040000
#> 169 169   17.070000
#> 170 170   17.100000
#> 171 171   17.130000
#> 172 172   17.160000
#> 173 173   17.190000
#> 174 174   17.220000
#> 175 175   17.250000
#> 176 176   17.280000
#> 177 177   17.310000
#> 178 178   17.340000
#> 179 179   17.370000
#> 180 180   17.400000
#> 181 181   17.430000
#> 182 182   17.460000
#> 183 183   17.490000
#> 184 184   17.520000
#> 185 185   17.550000
#> 186 186   17.580000
#> 187 187   17.610000
#> 188 188   17.640000
#> 189 189   17.670000
#> 190 190   17.700000
#> 191 191   17.730000
#> 192 192   17.760000
#> 193 193   17.790000
#> 194 194   17.820000
#> 195 195   17.850000
#> 196 196   17.880000
#> 197 197   17.910000
#> 198 198   17.940000
#> 199 199   17.970000
#> 200 200   18.000000
#> 201 201   17.933333
#> 202 202   17.866667
#> 203 203   17.800000
#> 204 204   17.733333
#> 205 205   17.666667
#> 206 206   17.600000
#> 207 207   17.533333
#> 208 208   17.466667
#> 209 209   17.400000
#> 210 210   17.333333
#> 211 211   17.266667
#> 212 212   17.200000
#> 213 213   17.133333
#> 214 214   17.066667
#> 215 215   17.000000
#> 216 216   16.933333
#> 217 217   16.866667
#> 218 218   16.800000
#> 219 219   16.733333
#> 220 220   16.666667
#> 221 221   16.600000
#> 222 222   16.533333
#> 223 223   16.466667
#> 224 224   16.400000
#> 225 225   16.333333
#> 226 226   16.266667
#> 227 227   16.200000
#> 228 228   16.133333
#> 229 229   16.066667
#> 230 230   16.000000
#> 231 231   15.933333
#> 232 232   15.866667
#> 233 233   15.800000
#> 234 234   15.733333
#> 235 235   15.666667
#> 236 236   15.600000
#> 237 237   15.533333
#> 238 238   15.466667
#> 239 239   15.400000
#> 240 240   15.333333
#> 241 241   15.266667
#> 242 242   15.200000
#> 243 243   15.133333
#> 244 244   15.066667
#> 245 245   15.000000
#> 246 246   14.933333
#> 247 247   14.866667
#> 248 248   14.800000
#> 249 249   14.733333
#> 250 250   14.666667
#> 251 251   14.600000
#> 252 252   14.533333
#> 253 253   14.466667
#> 254 254   14.400000
#> 255 255   14.333333
#> 256 256   14.266667
#> 257 257   14.200000
#> 258 258   14.133333
#> 259 259   14.066667
#> 260 260   14.000000
#> 261 261   13.933333
#> 262 262   13.866667
#> 263 263   13.800000
#> 264 264   13.733333
#> 265 265   13.666667
#> 266 266   13.600000
#> 267 267   13.533333
#> 268 268   13.466667
#> 269 269   13.400000
#> 270 270   13.333333
#> 271 271   13.266667
#> 272 272   13.200000
#> 273 273   13.133333
#> 274 274   13.066667
#> 275 275   13.000000
#> 276 276   12.933333
#> 277 277   12.866667
#> 278 278   12.800000
#> 279 279   12.733333
#> 280 280   12.666667
#> 281 281   12.600000
#> 282 282   12.533333
#> 283 283   12.466667
#> 284 284   12.400000
#> 285 285   12.333333
#> 286 286   12.266667
#> 287 287   12.200000
#> 288 288   12.133333
#> 289 289   12.066667
#> 290 290   12.000000
#> 291 291   11.933333
#> 292 292   11.866667
#> 293 293   11.800000
#> 294 294   11.733333
#> 295 295   11.666667
#> 296 296   11.600000
#> 297 297   11.533333
#> 298 298   11.466667
#> 299 299   11.400000
#> 300 300   11.333333
#> 301 301   11.266667
#> 302 302   11.200000
#> 303 303   11.133333
#> 304 304   11.066667
#> 305 305   11.000000
#> 306 306   10.933333
#> 307 307   10.866667
#> 308 308   10.800000
#> 309 309   10.733333
#> 310 310   10.666667
#> 311 311   10.600000
#> 312 312   10.533333
#> 313 313   10.466667
#> 314 314   10.400000
#> 315 315   10.333333
#> 316 316   10.266667
#> 317 317   10.200000
#> 318 318   10.133333
#> 319 319   10.066667
#> 320 320   10.000000
#> 321 321    9.933333
#> 322 322    9.866667
#> 323 323    9.800000
#> 324 324    9.733333
#> 325 325    9.666667
#> 326 326    9.600000
#> 327 327    9.533333
#> 328 328    9.466667
#> 329 329    9.400000
#> 330 330    9.333333
#> 331 331    9.266667
#> 332 332    9.200000
#> 333 333    9.133333
#> 334 334    9.066667
#> 335 335    9.000000
#> 336 336    8.933333
#> 337 337    8.866667
#> 338 338    8.800000
#> 339 339    8.733333
#> 340 340    8.666667
#> 341 341    8.600000
#> 342 342    8.533333
#> 343 343    8.466667
#> 344 344    8.400000
#> 345 345    8.333333
#> 346 346    8.266667
#> 347 347    8.200000
#> 348 348    8.133333
#> 349 349    8.066667
#> 350 350    8.000000
#> 351 351    7.933333
#> 352 352    7.866667
#> 353 353    7.800000
#> 354 354    7.733333
#> 355 355    7.666667
#> 356 356    7.600000
#> 357 357    7.533333
#> 358 358    7.466667
#> 359 359    7.400000
#> 360 360    7.333333
#> 361 361    7.266667
#> 362 362    7.200000
#> 363 363    7.133333
#> 364 364    7.066667
#> 365 365    7.000000