Skip to contents

Performs linear interpolation of missing values within short time segments, constrained by the availability of observed values in the same segment. This method ensures that interpolation is based on nearby valid data.

Usage

shorvalu(data, cols = NULL, intervals = 30, units = "mins",
         date_col = NULL, cores = NULL, verbose = FALSE)

Arguments

data

A data frame, matrix, or numeric vector. If a vector, simple linear interpolation is applied.

cols

Column indices or names of numeric variables to interpolate. Must be continuous.

intervals

Time gap used to define short periods.

units

Time unit for intervals: "secs", "mins", "hours", "days", "weeks".

date_col

Time column index or name. If NULL, automatically detected.

cores

Number of CPU cores for parallel computation (passed to C++).

verbose

Logical; if TRUE, prints timing and interpolation counts.

Value

A data frame with missing values filled by linear interpolation within each period.

References

1. Example data is from https://smear.avaa.csc.fi/download. It includes particle number concentrations in SMEAR I Varrio forest.

Author

Chun-Sheng Liang <chun-shengliang@qq.com>

Examples

shorvalu(condextr(obsedele(data[1:250, c(1, 4, 17:19)], cols = 3:5, group = 2),
                  cols = 3:5, group = 2),
         cols = 3:5)
#>                    date    monthyear      3.98       4.47      5.01
#> 1   2019-12-31 16:00:00 January 2020  42.97220  74.778500  24.83750
#> 2   2019-12-31 16:10:00 January 2020  42.97220  74.778500  24.83750
#> 3   2019-12-31 16:20:00 January 2020  42.97220  74.778500  24.83750
#> 4   2019-12-31 16:30:00 January 2020  42.97220  74.778500  24.83750
#> 5   2019-12-31 16:40:00 January 2020  52.11615   6.865100  44.71760
#> 6   2019-12-31 16:50:00 January 2020  61.26010   6.810320  44.36072
#> 7   2019-12-31 17:00:00 January 2020 115.89600   6.755540  44.00384
#> 8   2019-12-31 17:10:00 January 2020  88.57805   6.700760  43.64696
#> 9   2019-12-31 17:20:00 January 2020  61.26010   6.645980  43.29008
#> 10  2019-12-31 17:30:00 January 2020  60.94050   6.591200  42.93320
#> 11  2019-12-31 17:40:00 January 2020  61.00442   9.044067  58.91050
#> 12  2019-12-31 17:50:00 January 2020  61.06834  11.496933  74.88780
#> 13  2019-12-31 18:00:00 January 2020  61.13226  13.949800  90.86510
#> 14  2019-12-31 18:10:00 January 2020  61.19618  85.265200  85.80843
#> 15  2019-12-31 18:20:00 January 2020  61.26010 156.580600  80.75177
#> 16  2019-12-31 18:30:00 January 2020 130.96300 227.896000  75.69510
#> 17  2019-12-31 18:40:00 January 2020 131.60300 207.972000  69.07735
#> 18  2019-12-31 18:50:00 January 2020 132.24300 188.048000  62.45960
#> 19  2019-12-31 19:00:00 January 2020 132.88300 168.124000  55.84185
#> 20  2019-12-31 19:10:00 January 2020 133.52300 148.200000  49.22410
#> 21  2019-12-31 19:20:00 January 2020  61.26010 135.934117  45.15003
#> 22  2019-12-31 19:40:00 January 2020  57.58254 123.668233  41.07597
#> 23  2019-12-31 19:50:00 January 2020  53.90498 111.402350  37.00190
#> 24  2019-12-31 20:00:00 January 2020  50.22742  99.136467  32.92783
#> 25  2019-12-31 20:10:00 January 2020  46.54986  86.870583  28.85377
#> 26  2019-12-31 20:20:00 January 2020  42.87230  74.604700  24.77970
#> 27  2019-12-31 20:30:00 January 2020  42.97220  74.778500  24.83750
#> 28  2019-12-31 20:40:00 January 2020  56.36700  40.999250  35.93335
#> 29  2019-12-31 20:50:00 January 2020  69.76180   7.220000  47.02920
#> 30  2019-12-31 21:00:00 January 2020  83.15660  39.688250  35.49790
#> 31  2019-12-31 21:10:00 January 2020  96.55140  72.156500  23.96660
#> 32  2019-12-31 21:20:00 January 2020  39.79040  75.611000  64.48590
#> 33  2019-12-31 21:30:00 January 2020  96.70000  72.500300  24.08080
#> 34  2019-12-31 21:40:00 January 2020  86.36370  73.668120  24.46868
#> 35  2019-12-31 21:50:00 January 2020  76.02740  74.835940  24.85656
#> 36  2019-12-31 22:00:00 January 2020  65.69110  76.003760  25.24444
#> 37  2019-12-31 22:10:00 January 2020  55.35480  77.171580  25.63232
#> 38  2019-12-31 22:20:00 January 2020  45.01850  78.339400  26.02020
#> 39  2019-12-31 22:30:00 January 2020  61.26010 114.422700  58.60465
#> 40  2019-12-31 22:40:00 January 2020  82.65970 150.506000  91.18910
#> 41  2019-12-31 22:50:00 January 2020  71.95990 150.506000  91.18910
#> 42  2019-12-31 23:00:00 January 2020  61.26010 150.506000  91.18910
#> 43  2019-12-31 23:10:00 January 2020  61.26010 150.506000  91.18910
#> 44  2020-01-01 00:10:00 January 2020  35.99660  76.502400 111.10200
#> 45  2020-01-01 00:20:00 January 2020  35.99660  76.502400 111.10200
#> 46  2020-01-01 00:30:00 January 2020  35.99660  76.502400 111.10200
#> 47  2020-01-01 00:40:00 January 2020  35.99660  76.502400 111.10200
#> 48  2020-01-01 00:50:00 January 2020  44.41777  76.434925  89.65660
#> 49  2020-01-01 01:00:00 January 2020  52.83893  76.367450  68.21120
#> 50  2020-01-01 01:10:00 January 2020  61.26010  76.299975  46.76580
#> 51  2020-01-01 01:20:00 January 2020  94.86840  76.232500  25.32040
#> 52  2020-01-01 01:30:00 January 2020  94.86840   6.607000  43.03640
#> 53  2020-01-01 01:40:00 January 2020  94.86840   6.974900  45.43250
#> 54  2020-01-01 01:50:00 January 2020  94.86840   6.974900  45.43250
#> 55  2020-01-01 03:50:00 January 2020 129.78600 148.343000  49.27180
#> 56  2020-01-01 04:00:00 January 2020 129.78600 148.343000  49.27180
#> 57  2020-01-01 04:10:00 January 2020 129.78600 148.343000  49.27180
#> 58  2020-01-01 04:20:00 January 2020 129.78600 148.343000  49.27180
#> 59  2020-01-01 04:30:00 January 2020 129.78600 148.343000  49.27180
#> 60  2020-01-01 04:40:00 January 2020 129.78600 148.343000  49.27180
#> 61  2020-01-01 04:50:00 January 2020 129.78600 148.343000  49.27180
#> 62  2020-01-01 06:50:00 January 2020 122.52000  13.949800  90.86510
#> 63  2020-01-01 07:00:00 January 2020 122.52000  12.270650  79.92763
#> 64  2020-01-01 07:10:00 January 2020 122.52000  10.591500  68.99015
#> 65  2020-01-01 07:20:00 January 2020 122.52000   8.912350  58.05268
#> 66  2020-01-01 07:30:00 January 2020  82.74610   7.233200  47.11520
#> 67  2020-01-01 07:40:00 January 2020  42.97220  74.778500  24.83750
#> 68  2020-01-01 07:50:00 January 2020  42.97220  74.778500  24.83750
#> 69  2020-01-01 08:00:00 January 2020  42.97220  74.778500  24.83750
#> 70  2020-01-01 08:10:00 January 2020  42.97220  74.778500  24.83750
#> 71  2020-01-01 10:20:00 January 2020  45.01850  78.339400  26.02020
#> 72  2020-01-01 10:30:00 January 2020  45.01850  78.339400  26.02020
#> 73  2020-01-01 10:40:00 January 2020  45.01850  78.339400  26.02020
#> 74  2020-01-01 10:50:00 January 2020  45.01850  78.339400  26.02020
#> 75  2020-01-01 11:00:00 January 2020  44.64583  77.690900  25.80480
#> 76  2020-01-01 11:10:00 January 2020  44.27316  77.042400  25.58940
#> 77  2020-01-01 11:20:00 January 2020  43.90049  76.393900  25.37400
#> 78  2020-01-01 11:40:00 January 2020  43.52781  75.745400  25.15860
#> 79  2020-01-01 11:50:00 January 2020  43.15514  75.096900  24.94320
#> 80  2020-01-01 12:00:00 January 2020  42.78247  74.448400  24.72780
#> 81  2020-01-01 12:10:00 January 2020  42.40980  73.799900  24.51240
#> 82  2020-01-01 12:20:00 January 2020  45.01850  78.339400  26.02020
#> 83  2020-01-01 12:30:00 January 2020  45.01850  42.618300  35.47345
#> 84  2020-01-01 12:40:00 January 2020  45.01850   6.897200  44.92670
#> 85  2020-01-01 12:50:00 January 2020  45.01850   6.897200  44.92670
#> 86  2020-01-01 13:50:00 January 2020  60.92270   6.960000  45.33530
#> 87  2020-01-01 14:00:00 January 2020  60.92270   6.960000  45.33530
#> 88  2020-01-01 14:10:00 January 2020  60.92270   6.960000  45.33530
#> 89  2020-01-01 14:20:00 January 2020  60.92270   6.960000  45.33530
#> 90  2020-01-01 14:30:00 January 2020  60.92270   7.096600  46.22525
#> 91  2020-01-01 14:40:00 January 2020  60.92270   7.233200  47.11520
#> 92  2020-01-01 14:50:00 January 2020  60.92270   7.233200  47.11520
#> 93  2020-01-01 15:50:00 January 2020  57.14490   9.377600  47.85260
#> 94  2020-01-01 16:00:00 January 2020  57.14490   9.377600  47.85260
#> 95  2020-01-01 16:10:00 January 2020  57.14490   9.377600  47.85260
#> 96  2020-01-01 16:20:00 January 2020  54.42960   9.377600  47.85260
#> 97  2020-01-01 16:30:00 January 2020  51.71430  30.282167  39.21783
#> 98  2020-01-01 16:40:00 January 2020  48.99900  51.186733  30.58307
#> 99  2020-01-01 16:50:00 January 2020  46.28370  72.091300  21.94830
#> 100 2020-01-01 17:00:00 January 2020  45.00397  73.284967  37.60397
#> 101 2020-01-01 17:10:00 January 2020  43.72423  74.478633  53.25963
#> 102 2020-01-01 17:20:00 January 2020  42.44450  75.672300  68.91530
#> 103 2020-01-01 17:30:00 January 2020  42.44450  75.672300  68.91530
#> 104 2020-01-01 17:40:00 January 2020  42.44450  75.672300  68.91530
#> 105 2020-01-01 17:50:00 January 2020  42.44450  75.672300  68.91530
#> 106 2020-01-01 19:30:00 January 2020  96.12420  69.858100  21.26840
#> 107 2020-01-01 19:40:00 January 2020  96.12420  69.858100  21.26840
#> 108 2020-01-01 19:50:00 January 2020  96.12420  69.858100  21.26840
#> 109 2020-01-01 20:00:00 January 2020  96.12420  69.858100  21.26840
#> 110 2020-01-01 20:10:00 January 2020  90.55573  57.763900  26.59490
#> 111 2020-01-01 20:20:00 January 2020  84.98726  45.669700  31.92140
#> 112 2020-01-01 20:30:00 January 2020  79.41879  33.575500  37.24790
#> 113 2020-01-01 20:40:00 January 2020  73.85031  21.481300  42.57440
#> 114 2020-01-01 20:50:00 January 2020  68.28184   9.387100  47.90090
#> 115 2020-01-01 21:00:00 January 2020  62.71337   9.387100  47.90090
#> 116 2020-01-01 21:10:00 January 2020  57.14490   9.387100  47.90090
#> 117 2020-01-01 21:20:00 January 2020  57.14490   9.387100  47.90090
#> 118 2020-01-02 00:20:00 January 2020  46.28370  72.091300  21.94830
#> 119 2020-01-02 00:30:00 January 2020  46.28370  72.091300  21.94830
#> 120 2020-01-02 00:40:00 January 2020  46.28370  72.091300  21.94830
#> 121 2020-01-02 00:50:00 January 2020  46.28370  72.091300  21.94830
#> 122 2020-01-02 01:00:00 January 2020  49.86770  77.673800  23.64790
#> 123 2020-01-02 01:10:00 January 2020  52.85370  77.143243  23.48637
#> 124 2020-01-02 01:20:00 January 2020  55.83970  76.612686  23.32484
#> 125 2020-01-02 01:30:00 January 2020  58.82570  76.082129  23.16331
#> 126 2020-01-02 01:50:00 January 2020  55.99010  75.551571  23.00179
#> 127 2020-01-02 02:00:00 January 2020  53.15450  75.021014  22.84026
#> 128 2020-01-02 02:10:00 January 2020  50.31890  74.490457  22.67873
#> 129 2020-01-02 02:20:00 January 2020  47.48330  73.959900  22.51720
#> 130 2020-01-02 02:30:00 January 2020  94.93160 147.865000  45.01770
#> 131 2020-01-02 02:40:00 January 2020  47.47220  73.942600  22.51190
#> 132 2020-01-02 02:50:00 January 2020  45.61293   9.444500  48.19400
#> 133 2020-01-02 03:00:00 January 2020  43.75365   9.151900  46.70100
#> 134 2020-01-02 03:10:00 January 2020  41.89437   9.496800  48.46080
#> 135 2020-01-02 03:20:00 January 2020  40.03510  81.849500 118.44400
#> 136 2020-01-02 03:30:00 January 2020  41.41557   9.247000  47.18600
#> 137 2020-01-02 03:40:00 January 2020  42.79603   9.180200  46.84500
#> 138 2020-01-02 03:50:00 January 2020  44.17650  77.819500  66.92760
#> 139 2020-01-02 04:00:00 January 2020  47.67850  74.263900  22.60970
#> 140 2020-01-02 04:10:00 January 2020  67.97890 114.612450  76.77785
#> 141 2020-01-02 04:20:00 January 2020  88.27930 154.961000 130.94600
#> 142 2020-01-02 04:30:00 January 2020  88.47170 152.891000 118.94600
#> 143 2020-01-02 04:40:00 January 2020 140.84200  86.156800 248.78800
#> 144 2020-01-02 04:50:00 January 2020  58.27360  24.168100 123.32600
#> 145 2020-01-02 05:00:00 January 2020  55.63830 103.185000  99.75740
#> 146 2020-01-02 05:10:00 January 2020 116.02315  14.930600  76.18880
#> 147 2020-01-02 05:20:00 January 2020 176.40800 236.251000 197.45700
#> 148 2020-01-02 05:30:00 January 2020  93.72030  78.109700 102.03200
#> 149 2020-01-02 05:40:00 January 2020  67.54790  25.058300 127.86900
#> 150 2020-01-02 05:50:00 January 2020  41.37550  80.541300 101.75100
#> 151 2020-01-02 06:00:00 January 2020  66.48700  35.436700 180.82800
#> 152 2020-01-02 06:10:00 January 2020  91.59850  14.271000  72.82300
#> 153 2020-01-02 06:20:00 January 2020 116.71000  28.604300 145.96400
#> 154 2020-01-02 06:30:00 January 2020 149.42400  43.755300 223.27700
#> 155 2020-01-02 06:40:00 January 2020 182.13800 227.233000  97.73610
#> 156 2020-01-02 06:50:00 January 2020 125.57300 163.887000 264.90400
#> 157 2020-01-02 07:00:00 January 2020  79.26160  93.980800 308.64800
#> 158 2020-01-02 07:10:00 January 2020  40.75830  81.040300 108.91000
#> 159 2020-01-02 07:20:00 January 2020  33.26810  88.389100 202.39100
#> 160 2020-01-02 07:30:00 January 2020  35.05625  61.986200 150.54267
#> 161 2020-01-02 07:40:00 January 2020  36.84440  35.583300  98.69433
#> 162 2020-01-02 07:50:00 January 2020  38.63255   9.180400  46.84600
#> 163 2020-01-02 08:00:00 January 2020  40.42070  31.912067  53.23150
#> 164 2020-01-02 08:10:00 January 2020  42.20885  54.643733  59.61700
#> 165 2020-01-02 08:20:00 January 2020  43.99700  77.375400  66.00250
#> 166 2020-01-02 08:30:00 January 2020  45.65226   9.016600  46.01050
#> 167 2020-01-02 08:40:00 January 2020  47.30751  11.573750  59.05922
#> 168 2020-01-02 08:50:00 January 2020  48.96277  14.130900  72.10795
#> 169 2020-01-02 09:00:00 January 2020  50.61803  16.688050  85.15668
#> 170 2020-01-02 09:10:00 January 2020  52.27329  19.245200  98.20540
#> 171 2020-01-02 09:20:00 January 2020  53.92854  30.162020  83.05980
#> 172 2020-01-02 09:30:00 January 2020  55.58380  41.078840  67.91420
#> 173 2020-01-02 09:40:00 January 2020  57.39115  51.995660  52.76860
#> 174 2020-01-02 09:50:00 January 2020  59.19850  62.912480  37.62300
#> 175 2020-01-02 10:00:00 January 2020  47.39950  73.829300  22.47740
#> 176 2020-01-02 10:10:00 January 2020  47.39950  73.829300  22.47740
#> 177 2020-01-02 10:20:00 January 2020  47.39950  73.829300  22.47740
#> 178 2020-01-02 10:30:00 January 2020  47.39950  73.829300  22.47740