Multiple imputations to fill the missing data. Non missing independent variables are used to approximate a missing observations for a dependent variable. Quantitative models were built under Rcpp packages and the C++ library Armadillo.

fill_NA_N(
  x,
  model,
  posit_y,
  posit_x,
  w = NULL,
  logreg = FALSE,
  k = 10,
  ridge = 1e-06
)

# S3 method for class 'data.frame'
fill_NA_N(
  x,
  model,
  posit_y,
  posit_x,
  w = NULL,
  logreg = FALSE,
  k = 10,
  ridge = 1e-06
)

# S3 method for class 'data.table'
fill_NA_N(
  x,
  model,
  posit_y,
  posit_x,
  w = NULL,
  logreg = FALSE,
  k = 10,
  ridge = 1e-06
)

# S3 method for class 'matrix'
fill_NA_N(
  x,
  model,
  posit_y,
  posit_x,
  w = NULL,
  logreg = FALSE,
  k = 10,
  ridge = 1e-06
)

Arguments

x

a numeric matrix or data.frame/data.table (factor/character/numeric/logical) - variables

model

a character - possible options ("lm_bayes","lm_noise","pmm")

posit_y

an integer/character - a position/name of dependent variable

posit_x

an integer/character vector - positions/names of independent variables

w

a numeric vector - a weighting variable - only positive values, Default: NULL

logreg

a boolean - if dependent variable has log-normal distribution (numeric). If TRUE log-regression is evaluated and then returned exponential of results., Default: FALSE

k

an integer - a number of multiple imputations or for pmm a number of closest points from which a one random value is taken, Default:10

ridge

a numeric - a value added to diagonal elements of the x'x matrix, Default: 1e-6

Value

load imputations in a numeric/character/factor (similar to the input type) vector format

Methods (by class)

  • fill_NA_N(data.frame): s3 method for data.frame

  • fill_NA_N(data.table): S3 method for data.table

  • fill_NA_N(matrix): S3 method for matrix

Note

It is assumed that users add the intercept column themselves. The miceFast module provides the most efficient environment; the second recommended option is data.table with a numeric matrix. Only "lm_bayes", "lm_noise", and "pmm" models are supported. The model is fitted only when the number of complete observations exceeds the number of independent variables.

Examples

library(miceFast)
library(dplyr)
library(data.table)

data(air_miss)

# dplyr: PMM with 20 draws
air_miss %>%
  mutate(Ozone_pmm = fill_NA_N(
    x = ., model = "pmm",
    posit_y = "Ozone", posit_x = c("Solar.R", "Wind", "Temp"),
    k = 20
  ))
#>     Ozone Solar.R Wind Temp Day Intercept index   weights groups x_character
#> 1      41     190  7.4   67   1         1     1 1.0186350      5   (140,210]
#> 2      36     118  8.0   72   2         1     2 1.0107583      5    (70,140]
#> 3      12     149 12.6   74   3         1     3 0.9891023      5   (140,210]
#> 4      18     313 11.5   62   4         1     4 0.9913450      5   (280,350]
#> 5      NA      NA 14.3   56   5         1     5 0.9945367      5        <NA>
#> 6      28      NA 14.9   66   6         1     6 1.0088464      5        <NA>
#> 7      23     299  8.6   65   7         1     7 0.9933102      5   (280,350]
#> 8      19      99 13.8   59   8         1     8 0.9964602      5    (70,140]
#> 9       8      19 20.1   61   9         1     9 1.0180674      5      (0,70]
#> 10     NA     194  8.6   69  10         1    10 0.9950548      5   (140,210]
#> 11      7      NA  6.9   74  11         1    11 1.0137543      5        <NA>
#> 12     16     256  9.7   69  12         1    12 0.9862474      5   (210,280]
#> 13     11     290  9.2   66  13         1    13 0.9995110      5   (280,350]
#> 14     14     274 10.9   68  14         1    14 1.0037145      5   (210,280]
#> 15     18      65 13.2   58  15         1    15 0.9964222      5      (0,70]
#> 16     14     334 11.5   64  16         1    16 0.9898265      5   (280,350]
#> 17     34     307 12.0   66  17         1    17 1.0022897      5   (280,350]
#> 18      6      78 18.4   57  18         1    18 1.0012367      5    (70,140]
#> 19     30     322 11.5   68  19         1    19 1.0084019      5   (280,350]
#> 20     11      44  9.7   62  20         1    20 0.9877371      5      (0,70]
#> 21      1       8  9.7   59  21         1    21 0.9975105      5      (0,70]
#> 22     11     320 16.6   73  22         1    22 0.9993213      5   (280,350]
#> 23      4      25  9.7   61  23         1    23 0.9949510      5      (0,70]
#> 24     32      92 12.0   61  24         1    24 1.0121339      5    (70,140]
#> 25     NA      66 16.6   57  25         1    25 1.0124095      5      (0,70]
#> 26     NA     266 14.9   58  26         1    26 1.0047912      5   (210,280]
#> 27     NA      NA  8.0   57  27         1    27 0.9998296      5        <NA>
#> 28     23      13 12.0   67  28         1    28 0.9901172      5      (0,70]
#> 29     45     252 14.9   81  29         1    29 1.0197179      5   (210,280]
#> 30    115     223  5.7   79  30         1    30 1.0060722      5   (210,280]
#> 31     37     279  7.4   76  31         1    31 1.0080169      5   (210,280]
#> 32     NA     286  8.6   78   1         1    32 1.0121752      6   (280,350]
#> 33     NA     287  9.7   74   2         1    33 0.9958874      6   (280,350]
#> 34     NA     242 16.1   67   3         1    34 0.9978362      6   (210,280]
#> 35     NA     186  9.2   84   4         1    35 0.9940910      6   (140,210]
#> 36     NA     220  8.6   85   5         1    36 1.0046951      6   (210,280]
#> 37     NA     264 14.3   79   6         1    37 1.0066960      6   (210,280]
#> 38     29     127  9.7   82   7         1    38 0.9993627      6    (70,140]
#> 39     NA     273  6.9   87   8         1    39 1.0002943      6   (210,280]
#> 40     71     291 13.8   90   9         1    40 0.9968199      6   (280,350]
#> 41     39     323 11.5   87  10         1    41 1.0056739      6   (280,350]
#> 42     NA     259 10.9   93  11         1    42 0.9976106      6   (210,280]
#> 43     NA     250  9.2   92  12         1    43 1.0102772      6   (210,280]
#> 44     23     148  8.0   82  13         1    44 1.0037450      6   (140,210]
#> 45     NA     332 13.8   80  14         1    45 1.0085720      6   (280,350]
#> 46     NA     322 11.5   79  15         1    46 1.0039686      6   (280,350]
#> 47     21     191 14.9   77  16         1    47 1.0039100      6   (140,210]
#> 48     37     284 20.7   72  17         1    48 0.9826485      6   (280,350]
#> 49     20      37  9.2   65  18         1    49 1.0094902      6      (0,70]
#> 50     12     120 11.5   73  19         1    50 0.9970971      6    (70,140]
#> 51     13     137 10.3   76  20         1    51 0.9952965      6    (70,140]
#> 52     NA     150  6.3   77  21         1    52 0.9990534      6   (140,210]
#> 53     NA      59  1.7   76  22         1    53 0.9897811      6      (0,70]
#> 54     NA      91  4.6   76  23         1    54 0.9877399      6    (70,140]
#> 55     NA     250  6.3   76  24         1    55 1.0068612      6   (210,280]
#> 56     NA     135  8.0   75  25         1    56 0.9949438      6    (70,140]
#> 57     NA     127  8.0   78  26         1    57 1.0101760      6    (70,140]
#> 58     NA      47 10.3   73  27         1    58 1.0028999      6      (0,70]
#> 59     NA      98 11.5   80  28         1    59 1.0022141      6    (70,140]
#> 60     NA      31 14.9   77  29         1    60 0.9993376      6      (0,70]
#> 61     NA     138  8.0   83  30         1    61 1.0075570      6    (70,140]
#> 62    135     269  4.1   84   1         1    62 1.0020979      7   (210,280]
#> 63     49     248  9.2   85   2         1    63 0.9998938      7   (210,280]
#> 64     32     236  9.2   81   3         1    64 1.0004625      7   (210,280]
#> 65     NA     101 10.9   84   4         1    65 0.9827890      7    (70,140]
#> 66     64     175  4.6   83   5         1    66 0.9935117      7   (140,210]
#> 67     40     314 10.9   83   6         1    67 0.9978889      7   (280,350]
#> 68     77     276  5.1   88   7         1    68 1.0117213      7   (210,280]
#> 69     97     267  6.3   92   8         1    69 1.0030677      7   (210,280]
#> 70     97     272  5.7   92   9         1    70 0.9887215      7   (210,280]
#> 71     85     175  7.4   89  10         1    71 0.9944119      7   (140,210]
#> 72     NA     139  8.6   82  11         1    72 1.0045765      7    (70,140]
#> 73     10     264 14.3   73  12         1    73 0.9998116      7   (210,280]
#> 74     27     175 14.9   81  13         1    74 1.0046056      7   (140,210]
#> 75     NA     291 14.9   91  14         1    75 1.0153114      7   (280,350]
#> 76      7      48 14.3   80  15         1    76 1.0051227      7      (0,70]
#> 77     48     260  6.9   81  16         1    77 1.0076395      7   (210,280]
#> 78     35     274 10.3   82  17         1    78 1.0144368      7   (210,280]
#> 79     61     285  6.3   84  18         1    79 1.0047472      7   (280,350]
#> 80     79     187  5.1   87  19         1    80 0.9952804      7   (140,210]
#> 81     63     220 11.5   85  20         1    81 1.0015820      7   (210,280]
#> 82     16       7  6.9   74  21         1    82 0.9938580      7      (0,70]
#> 83     NA     258  9.7   81  22         1    83 0.9992910      7   (210,280]
#> 84     NA     295 11.5   82  23         1    84 0.9902536      7   (280,350]
#> 85     80     294  8.6   86  24         1    85 0.9919899      7   (280,350]
#> 86    108     223  8.0   85  25         1    86 1.0068377      7   (210,280]
#> 87     20      81  8.6   82  26         1    87 0.9953272      7    (70,140]
#> 88     52      82 12.0   86  27         1    88 1.0210192      7    (70,140]
#> 89     82     213  7.4   88  28         1    89 1.0027222      7   (210,280]
#> 90     50     275  7.4   86  29         1    90 1.0046704      7   (210,280]
#> 91     64     253  7.4   83  30         1    91 1.0008055      7   (210,280]
#> 92     59     254  9.2   81  31         1    92 1.0069694      7   (210,280]
#> 93     39      83  6.9   81   1         1    93 1.0025879      8    (70,140]
#> 94      9      24 13.8   81   2         1    94 0.9977274      8      (0,70]
#> 95     16      77  7.4   82   3         1    95 1.0052109      8    (70,140]
#> 96     78      NA  6.9   86   4         1    96 0.9780448      8        <NA>
#> 97     35      NA  7.4   85   5         1    97 0.9885361      8        <NA>
#> 98     66      NA  4.6   87   6         1    98 0.9786223      8        <NA>
#> 99    122     255  4.0   89   7         1    99 1.0007045      8   (210,280]
#> 100    89     229 10.3   90   8         1   100 0.9965138      8   (210,280]
#> 101   110     207  8.0   90   9         1   101 1.0000343      8   (140,210]
#> 102    NA     222  8.6   92  10         1   102 0.9949271      8   (210,280]
#> 103    NA     137 11.5   86  11         1   103 0.9995715      8    (70,140]
#> 104    44     192 11.5   86  12         1   104 1.0010441      8   (140,210]
#> 105    28     273 11.5   82  13         1   105 1.0180383      8   (210,280]
#> 106    65     157  9.7   80  14         1   106 1.0116379      8   (140,210]
#> 107    NA      64 11.5   79  15         1   107 0.9996890      8      (0,70]
#> 108    22      71 10.3   77  16         1   108 1.0103102      8    (70,140]
#> 109    59      51  6.3   79  17         1   109 1.0040485      8      (0,70]
#> 110    23     115  7.4   76  18         1   110 1.0125059      8    (70,140]
#> 111    31     244 10.9   78  19         1   111 0.9907597      8   (210,280]
#> 112    44     190 10.3   78  20         1   112 1.0016896      8   (140,210]
#> 113    21     259 15.5   77  21         1   113 1.0040223      8   (210,280]
#> 114     9      36 14.3   72  22         1   114 0.9997726      8      (0,70]
#> 115    NA     255 12.6   75  23         1   115 0.9946828      8   (210,280]
#> 116    45     212  9.7   79  24         1   116 0.9796297      8   (210,280]
#> 117   168     238  3.4   81  25         1   117 1.0134912      8   (210,280]
#> 118    73     215  8.0   86  26         1   118 0.9943290      8   (210,280]
#> 119    NA     153  5.7   88  27         1   119 0.9947362      8   (140,210]
#> 120    76     203  9.7   97  28         1   120 1.0202685      8   (140,210]
#> 121   118     225  2.3   94  29         1   121 0.9915690      8   (210,280]
#> 122    84     237  6.3   96  30         1   122 1.0045993      8   (210,280]
#> 123    85     188  6.3   94  31         1   123 0.9997329      8   (140,210]
#> 124    96     167  6.9   91   1         1   124 0.9912182      9   (140,210]
#> 125    78     197  5.1   92   2         1   125 0.9945931      9   (140,210]
#> 126    73     183  2.8   93   3         1   126 0.9908711      9   (140,210]
#> 127    91     189  4.6   93   4         1   127 1.0046064      9   (140,210]
#> 128    47      95  7.4   87   5         1   128 1.0122550      9    (70,140]
#> 129    32      92 15.5   84   6         1   129 0.9870982      9    (70,140]
#> 130    20     252 10.9   80   7         1   130 0.9920913      9   (210,280]
#> 131    23     220 10.3   78   8         1   131 1.0118155      9   (210,280]
#> 132    21     230 10.9   75   9         1   132 0.9948104      9   (210,280]
#> 133    24     259  9.7   73  10         1   133 0.9900645      9   (210,280]
#> 134    44     236 14.9   81  11         1   134 0.9902580      9   (210,280]
#> 135    21     259 15.5   76  12         1   135 1.0146258      9   (210,280]
#> 136    28     238  6.3   77  13         1   136 1.0108690      9   (210,280]
#> 137     9      24 10.9   71  14         1   137 0.9860623      9      (0,70]
#> 138    13     112 11.5   71  15         1   138 1.0082647      9    (70,140]
#> 139    46     237  6.9   78  16         1   139 1.0173902      9   (210,280]
#> 140    18     224 13.8   67  17         1   140 0.9848134      9   (210,280]
#> 141    13      27 10.3   76  18         1   141 0.9990203      9      (0,70]
#> 142    24     238 10.3   68  19         1   142 1.0047265      9   (210,280]
#> 143    16     201  8.0   82  20         1   143 1.0091025      9   (140,210]
#> 144    13     238 12.6   64  21         1   144 0.9877918      9   (210,280]
#> 145    23      14  9.2   71  22         1   145 1.0007646      9      (0,70]
#> 146    36     139 10.3   81  23         1   146 0.9880016      9    (70,140]
#> 147     7      49 10.3   69  24         1   147 0.9926906      9      (0,70]
#> 148    14      20 16.6   63  25         1   148 1.0072197      9      (0,70]
#> 149    30     193  6.9   70  26         1   149 0.9985280      9   (140,210]
#> 150    NA     145 13.2   77  27         1   150 1.0001786      9   (140,210]
#> 151    14     191 14.3   75  28         1   151 1.0024673      9   (140,210]
#> 152    18     131  8.0   76  29         1   152 0.9968826      9    (70,140]
#> 153    20     223 11.5   68  30         1   153 1.0056592      9   (210,280]
#>     Ozone_chac   Ozone_f Ozone_high Ozone_pmm
#> 1      (40,60]   (40,60]      FALSE        41
#> 2      (20,40]   (20,40]      FALSE        36
#> 3       (0,20]    (0,20]      FALSE        12
#> 4       (0,20]    (0,20]      FALSE        18
#> 5         <NA>      <NA>         NA        NA
#> 6      (20,40]   (20,40]      FALSE        28
#> 7      (20,40]   (20,40]      FALSE        23
#> 8       (0,20]    (0,20]      FALSE        19
#> 9       (0,20]    (0,20]      FALSE         8
#> 10        <NA>      <NA>         NA       110
#> 11      (0,20]    (0,20]      FALSE         7
#> 12      (0,20]    (0,20]      FALSE        16
#> 13      (0,20]    (0,20]      FALSE        11
#> 14      (0,20]    (0,20]      FALSE        14
#> 15      (0,20]    (0,20]      FALSE        18
#> 16      (0,20]    (0,20]      FALSE        14
#> 17     (20,40]   (20,40]      FALSE        34
#> 18      (0,20]    (0,20]      FALSE         6
#> 19     (20,40]   (20,40]      FALSE        30
#> 20      (0,20]    (0,20]      FALSE        11
#> 21      (0,20]    (0,20]      FALSE         1
#> 22      (0,20]    (0,20]      FALSE        11
#> 23      (0,20]    (0,20]      FALSE         4
#> 24     (20,40]   (20,40]      FALSE        32
#> 25        <NA>      <NA>         NA        21
#> 26        <NA>      <NA>         NA         1
#> 27        <NA>      <NA>         NA        NA
#> 28     (20,40]   (20,40]      FALSE        23
#> 29     (40,60]   (40,60]       TRUE        45
#> 30   (100,120] (100,120]       TRUE       115
#> 31     (20,40]   (20,40]      FALSE        37
#> 32        <NA>      <NA>         NA        23
#> 33        <NA>      <NA>         NA        40
#> 34        <NA>      <NA>         NA        21
#> 35        <NA>      <NA>         NA        18
#> 36        <NA>      <NA>         NA        28
#> 37        <NA>      <NA>         NA        16
#> 38     (20,40]   (20,40]      FALSE        29
#> 39        <NA>      <NA>         NA        96
#> 40     (60,80]   (60,80]       TRUE        71
#> 41     (20,40]   (20,40]      FALSE        39
#> 42        <NA>      <NA>         NA        16
#> 43        <NA>      <NA>         NA        52
#> 44     (20,40]   (20,40]      FALSE        23
#> 45        <NA>      <NA>         NA        32
#> 46        <NA>      <NA>         NA        39
#> 47     (20,40]   (20,40]      FALSE        21
#> 48     (20,40]   (20,40]      FALSE        37
#> 49      (0,20]    (0,20]      FALSE        20
#> 50      (0,20]    (0,20]      FALSE        12
#> 51      (0,20]    (0,20]      FALSE        13
#> 52        <NA>      <NA>         NA       108
#> 53        <NA>      <NA>         NA       118
#> 54        <NA>      <NA>         NA        29
#> 55        <NA>      <NA>         NA        79
#> 56        <NA>      <NA>         NA        23
#> 57        <NA>      <NA>         NA        21
#> 58        <NA>      <NA>         NA        11
#> 59        <NA>      <NA>         NA        18
#> 60        <NA>      <NA>         NA        21
#> 61        <NA>      <NA>         NA        59
#> 62   (120,140] (120,140]       TRUE       135
#> 63     (40,60]   (40,60]       TRUE        49
#> 64     (20,40]   (20,40]      FALSE        32
#> 65        <NA>      <NA>         NA        24
#> 66     (60,80]   (60,80]       TRUE        64
#> 67     (20,40]   (20,40]      FALSE        40
#> 68     (60,80]   (60,80]       TRUE        77
#> 69    (80,100]  (80,100]       TRUE        97
#> 70    (80,100]  (80,100]       TRUE        97
#> 71    (80,100]  (80,100]       TRUE        85
#> 72        <NA>      <NA>         NA        23
#> 73      (0,20]    (0,20]      FALSE        10
#> 74     (20,40]   (20,40]      FALSE        27
#> 75        <NA>      <NA>         NA        14
#> 76      (0,20]    (0,20]      FALSE         7
#> 77     (40,60]   (40,60]       TRUE        48
#> 78     (20,40]   (20,40]      FALSE        35
#> 79     (60,80]   (60,80]       TRUE        61
#> 80     (60,80]   (60,80]       TRUE        79
#> 81     (60,80]   (60,80]       TRUE        63
#> 82      (0,20]    (0,20]      FALSE        16
#> 83        <NA>      <NA>         NA        12
#> 84        <NA>      <NA>         NA        23
#> 85     (60,80]   (60,80]       TRUE        80
#> 86   (100,120] (100,120]       TRUE       108
#> 87      (0,20]    (0,20]      FALSE        20
#> 88     (40,60]   (40,60]       TRUE        52
#> 89    (80,100]  (80,100]       TRUE        82
#> 90     (40,60]   (40,60]       TRUE        50
#> 91     (60,80]   (60,80]       TRUE        64
#> 92     (40,60]   (40,60]       TRUE        59
#> 93     (20,40]   (20,40]      FALSE        39
#> 94      (0,20]    (0,20]      FALSE         9
#> 95      (0,20]    (0,20]      FALSE        16
#> 96     (60,80]   (60,80]       TRUE        78
#> 97     (20,40]   (20,40]      FALSE        35
#> 98     (60,80]   (60,80]       TRUE        66
#> 99   (120,140] (120,140]       TRUE       122
#> 100   (80,100]  (80,100]       TRUE        89
#> 101  (100,120] (100,120]       TRUE       110
#> 102       <NA>      <NA>         NA        50
#> 103       <NA>      <NA>         NA        91
#> 104    (40,60]   (40,60]       TRUE        44
#> 105    (20,40]   (20,40]      FALSE        28
#> 106    (60,80]   (60,80]       TRUE        65
#> 107       <NA>      <NA>         NA        13
#> 108    (20,40]   (20,40]      FALSE        22
#> 109    (40,60]   (40,60]       TRUE        59
#> 110    (20,40]   (20,40]      FALSE        23
#> 111    (20,40]   (20,40]      FALSE        31
#> 112    (40,60]   (40,60]       TRUE        44
#> 113    (20,40]   (20,40]      FALSE        21
#> 114     (0,20]    (0,20]      FALSE         9
#> 115       <NA>      <NA>         NA        21
#> 116    (40,60]   (40,60]       TRUE        45
#> 117       <NA>      <NA>       TRUE       168
#> 118    (60,80]   (60,80]       TRUE        73
#> 119       <NA>      <NA>         NA        73
#> 120    (60,80]   (60,80]       TRUE        76
#> 121  (100,120] (100,120]       TRUE       118
#> 122   (80,100]  (80,100]       TRUE        84
#> 123   (80,100]  (80,100]       TRUE        85
#> 124   (80,100]  (80,100]       TRUE        96
#> 125    (60,80]   (60,80]       TRUE        78
#> 126    (60,80]   (60,80]       TRUE        73
#> 127   (80,100]  (80,100]       TRUE        91
#> 128    (40,60]   (40,60]       TRUE        47
#> 129    (20,40]   (20,40]      FALSE        32
#> 130     (0,20]    (0,20]      FALSE        20
#> 131    (20,40]   (20,40]      FALSE        23
#> 132    (20,40]   (20,40]      FALSE        21
#> 133    (20,40]   (20,40]      FALSE        24
#> 134    (40,60]   (40,60]       TRUE        44
#> 135    (20,40]   (20,40]      FALSE        21
#> 136    (20,40]   (20,40]      FALSE        28
#> 137     (0,20]    (0,20]      FALSE         9
#> 138     (0,20]    (0,20]      FALSE        13
#> 139    (40,60]   (40,60]       TRUE        46
#> 140     (0,20]    (0,20]      FALSE        18
#> 141     (0,20]    (0,20]      FALSE        13
#> 142    (20,40]   (20,40]      FALSE        24
#> 143     (0,20]    (0,20]      FALSE        16
#> 144     (0,20]    (0,20]      FALSE        13
#> 145    (20,40]   (20,40]      FALSE        23
#> 146    (20,40]   (20,40]      FALSE        36
#> 147     (0,20]    (0,20]      FALSE         7
#> 148     (0,20]    (0,20]      FALSE        14
#> 149    (20,40]   (20,40]      FALSE        30
#> 150       <NA>      <NA>         NA        21
#> 151     (0,20]    (0,20]      FALSE        14
#> 152     (0,20]    (0,20]      FALSE        18
#> 153     (0,20]    (0,20]      FALSE        20

# dplyr: lm_noise with weights
air_miss %>%
  mutate(Ozone_imp = fill_NA_N(
    x = ., model = "lm_noise",
    posit_y = "Ozone",
    posit_x = c("Solar.R", "Wind", "Temp"),
    w = .[["weights"]],
    logreg = TRUE, k = 30
  ))
#>     Ozone Solar.R Wind Temp Day Intercept index   weights groups x_character
#> 1      41     190  7.4   67   1         1     1 1.0186350      5   (140,210]
#> 2      36     118  8.0   72   2         1     2 1.0107583      5    (70,140]
#> 3      12     149 12.6   74   3         1     3 0.9891023      5   (140,210]
#> 4      18     313 11.5   62   4         1     4 0.9913450      5   (280,350]
#> 5      NA      NA 14.3   56   5         1     5 0.9945367      5        <NA>
#> 6      28      NA 14.9   66   6         1     6 1.0088464      5        <NA>
#> 7      23     299  8.6   65   7         1     7 0.9933102      5   (280,350]
#> 8      19      99 13.8   59   8         1     8 0.9964602      5    (70,140]
#> 9       8      19 20.1   61   9         1     9 1.0180674      5      (0,70]
#> 10     NA     194  8.6   69  10         1    10 0.9950548      5   (140,210]
#> 11      7      NA  6.9   74  11         1    11 1.0137543      5        <NA>
#> 12     16     256  9.7   69  12         1    12 0.9862474      5   (210,280]
#> 13     11     290  9.2   66  13         1    13 0.9995110      5   (280,350]
#> 14     14     274 10.9   68  14         1    14 1.0037145      5   (210,280]
#> 15     18      65 13.2   58  15         1    15 0.9964222      5      (0,70]
#> 16     14     334 11.5   64  16         1    16 0.9898265      5   (280,350]
#> 17     34     307 12.0   66  17         1    17 1.0022897      5   (280,350]
#> 18      6      78 18.4   57  18         1    18 1.0012367      5    (70,140]
#> 19     30     322 11.5   68  19         1    19 1.0084019      5   (280,350]
#> 20     11      44  9.7   62  20         1    20 0.9877371      5      (0,70]
#> 21      1       8  9.7   59  21         1    21 0.9975105      5      (0,70]
#> 22     11     320 16.6   73  22         1    22 0.9993213      5   (280,350]
#> 23      4      25  9.7   61  23         1    23 0.9949510      5      (0,70]
#> 24     32      92 12.0   61  24         1    24 1.0121339      5    (70,140]
#> 25     NA      66 16.6   57  25         1    25 1.0124095      5      (0,70]
#> 26     NA     266 14.9   58  26         1    26 1.0047912      5   (210,280]
#> 27     NA      NA  8.0   57  27         1    27 0.9998296      5        <NA>
#> 28     23      13 12.0   67  28         1    28 0.9901172      5      (0,70]
#> 29     45     252 14.9   81  29         1    29 1.0197179      5   (210,280]
#> 30    115     223  5.7   79  30         1    30 1.0060722      5   (210,280]
#> 31     37     279  7.4   76  31         1    31 1.0080169      5   (210,280]
#> 32     NA     286  8.6   78   1         1    32 1.0121752      6   (280,350]
#> 33     NA     287  9.7   74   2         1    33 0.9958874      6   (280,350]
#> 34     NA     242 16.1   67   3         1    34 0.9978362      6   (210,280]
#> 35     NA     186  9.2   84   4         1    35 0.9940910      6   (140,210]
#> 36     NA     220  8.6   85   5         1    36 1.0046951      6   (210,280]
#> 37     NA     264 14.3   79   6         1    37 1.0066960      6   (210,280]
#> 38     29     127  9.7   82   7         1    38 0.9993627      6    (70,140]
#> 39     NA     273  6.9   87   8         1    39 1.0002943      6   (210,280]
#> 40     71     291 13.8   90   9         1    40 0.9968199      6   (280,350]
#> 41     39     323 11.5   87  10         1    41 1.0056739      6   (280,350]
#> 42     NA     259 10.9   93  11         1    42 0.9976106      6   (210,280]
#> 43     NA     250  9.2   92  12         1    43 1.0102772      6   (210,280]
#> 44     23     148  8.0   82  13         1    44 1.0037450      6   (140,210]
#> 45     NA     332 13.8   80  14         1    45 1.0085720      6   (280,350]
#> 46     NA     322 11.5   79  15         1    46 1.0039686      6   (280,350]
#> 47     21     191 14.9   77  16         1    47 1.0039100      6   (140,210]
#> 48     37     284 20.7   72  17         1    48 0.9826485      6   (280,350]
#> 49     20      37  9.2   65  18         1    49 1.0094902      6      (0,70]
#> 50     12     120 11.5   73  19         1    50 0.9970971      6    (70,140]
#> 51     13     137 10.3   76  20         1    51 0.9952965      6    (70,140]
#> 52     NA     150  6.3   77  21         1    52 0.9990534      6   (140,210]
#> 53     NA      59  1.7   76  22         1    53 0.9897811      6      (0,70]
#> 54     NA      91  4.6   76  23         1    54 0.9877399      6    (70,140]
#> 55     NA     250  6.3   76  24         1    55 1.0068612      6   (210,280]
#> 56     NA     135  8.0   75  25         1    56 0.9949438      6    (70,140]
#> 57     NA     127  8.0   78  26         1    57 1.0101760      6    (70,140]
#> 58     NA      47 10.3   73  27         1    58 1.0028999      6      (0,70]
#> 59     NA      98 11.5   80  28         1    59 1.0022141      6    (70,140]
#> 60     NA      31 14.9   77  29         1    60 0.9993376      6      (0,70]
#> 61     NA     138  8.0   83  30         1    61 1.0075570      6    (70,140]
#> 62    135     269  4.1   84   1         1    62 1.0020979      7   (210,280]
#> 63     49     248  9.2   85   2         1    63 0.9998938      7   (210,280]
#> 64     32     236  9.2   81   3         1    64 1.0004625      7   (210,280]
#> 65     NA     101 10.9   84   4         1    65 0.9827890      7    (70,140]
#> 66     64     175  4.6   83   5         1    66 0.9935117      7   (140,210]
#> 67     40     314 10.9   83   6         1    67 0.9978889      7   (280,350]
#> 68     77     276  5.1   88   7         1    68 1.0117213      7   (210,280]
#> 69     97     267  6.3   92   8         1    69 1.0030677      7   (210,280]
#> 70     97     272  5.7   92   9         1    70 0.9887215      7   (210,280]
#> 71     85     175  7.4   89  10         1    71 0.9944119      7   (140,210]
#> 72     NA     139  8.6   82  11         1    72 1.0045765      7    (70,140]
#> 73     10     264 14.3   73  12         1    73 0.9998116      7   (210,280]
#> 74     27     175 14.9   81  13         1    74 1.0046056      7   (140,210]
#> 75     NA     291 14.9   91  14         1    75 1.0153114      7   (280,350]
#> 76      7      48 14.3   80  15         1    76 1.0051227      7      (0,70]
#> 77     48     260  6.9   81  16         1    77 1.0076395      7   (210,280]
#> 78     35     274 10.3   82  17         1    78 1.0144368      7   (210,280]
#> 79     61     285  6.3   84  18         1    79 1.0047472      7   (280,350]
#> 80     79     187  5.1   87  19         1    80 0.9952804      7   (140,210]
#> 81     63     220 11.5   85  20         1    81 1.0015820      7   (210,280]
#> 82     16       7  6.9   74  21         1    82 0.9938580      7      (0,70]
#> 83     NA     258  9.7   81  22         1    83 0.9992910      7   (210,280]
#> 84     NA     295 11.5   82  23         1    84 0.9902536      7   (280,350]
#> 85     80     294  8.6   86  24         1    85 0.9919899      7   (280,350]
#> 86    108     223  8.0   85  25         1    86 1.0068377      7   (210,280]
#> 87     20      81  8.6   82  26         1    87 0.9953272      7    (70,140]
#> 88     52      82 12.0   86  27         1    88 1.0210192      7    (70,140]
#> 89     82     213  7.4   88  28         1    89 1.0027222      7   (210,280]
#> 90     50     275  7.4   86  29         1    90 1.0046704      7   (210,280]
#> 91     64     253  7.4   83  30         1    91 1.0008055      7   (210,280]
#> 92     59     254  9.2   81  31         1    92 1.0069694      7   (210,280]
#> 93     39      83  6.9   81   1         1    93 1.0025879      8    (70,140]
#> 94      9      24 13.8   81   2         1    94 0.9977274      8      (0,70]
#> 95     16      77  7.4   82   3         1    95 1.0052109      8    (70,140]
#> 96     78      NA  6.9   86   4         1    96 0.9780448      8        <NA>
#> 97     35      NA  7.4   85   5         1    97 0.9885361      8        <NA>
#> 98     66      NA  4.6   87   6         1    98 0.9786223      8        <NA>
#> 99    122     255  4.0   89   7         1    99 1.0007045      8   (210,280]
#> 100    89     229 10.3   90   8         1   100 0.9965138      8   (210,280]
#> 101   110     207  8.0   90   9         1   101 1.0000343      8   (140,210]
#> 102    NA     222  8.6   92  10         1   102 0.9949271      8   (210,280]
#> 103    NA     137 11.5   86  11         1   103 0.9995715      8    (70,140]
#> 104    44     192 11.5   86  12         1   104 1.0010441      8   (140,210]
#> 105    28     273 11.5   82  13         1   105 1.0180383      8   (210,280]
#> 106    65     157  9.7   80  14         1   106 1.0116379      8   (140,210]
#> 107    NA      64 11.5   79  15         1   107 0.9996890      8      (0,70]
#> 108    22      71 10.3   77  16         1   108 1.0103102      8    (70,140]
#> 109    59      51  6.3   79  17         1   109 1.0040485      8      (0,70]
#> 110    23     115  7.4   76  18         1   110 1.0125059      8    (70,140]
#> 111    31     244 10.9   78  19         1   111 0.9907597      8   (210,280]
#> 112    44     190 10.3   78  20         1   112 1.0016896      8   (140,210]
#> 113    21     259 15.5   77  21         1   113 1.0040223      8   (210,280]
#> 114     9      36 14.3   72  22         1   114 0.9997726      8      (0,70]
#> 115    NA     255 12.6   75  23         1   115 0.9946828      8   (210,280]
#> 116    45     212  9.7   79  24         1   116 0.9796297      8   (210,280]
#> 117   168     238  3.4   81  25         1   117 1.0134912      8   (210,280]
#> 118    73     215  8.0   86  26         1   118 0.9943290      8   (210,280]
#> 119    NA     153  5.7   88  27         1   119 0.9947362      8   (140,210]
#> 120    76     203  9.7   97  28         1   120 1.0202685      8   (140,210]
#> 121   118     225  2.3   94  29         1   121 0.9915690      8   (210,280]
#> 122    84     237  6.3   96  30         1   122 1.0045993      8   (210,280]
#> 123    85     188  6.3   94  31         1   123 0.9997329      8   (140,210]
#> 124    96     167  6.9   91   1         1   124 0.9912182      9   (140,210]
#> 125    78     197  5.1   92   2         1   125 0.9945931      9   (140,210]
#> 126    73     183  2.8   93   3         1   126 0.9908711      9   (140,210]
#> 127    91     189  4.6   93   4         1   127 1.0046064      9   (140,210]
#> 128    47      95  7.4   87   5         1   128 1.0122550      9    (70,140]
#> 129    32      92 15.5   84   6         1   129 0.9870982      9    (70,140]
#> 130    20     252 10.9   80   7         1   130 0.9920913      9   (210,280]
#> 131    23     220 10.3   78   8         1   131 1.0118155      9   (210,280]
#> 132    21     230 10.9   75   9         1   132 0.9948104      9   (210,280]
#> 133    24     259  9.7   73  10         1   133 0.9900645      9   (210,280]
#> 134    44     236 14.9   81  11         1   134 0.9902580      9   (210,280]
#> 135    21     259 15.5   76  12         1   135 1.0146258      9   (210,280]
#> 136    28     238  6.3   77  13         1   136 1.0108690      9   (210,280]
#> 137     9      24 10.9   71  14         1   137 0.9860623      9      (0,70]
#> 138    13     112 11.5   71  15         1   138 1.0082647      9    (70,140]
#> 139    46     237  6.9   78  16         1   139 1.0173902      9   (210,280]
#> 140    18     224 13.8   67  17         1   140 0.9848134      9   (210,280]
#> 141    13      27 10.3   76  18         1   141 0.9990203      9      (0,70]
#> 142    24     238 10.3   68  19         1   142 1.0047265      9   (210,280]
#> 143    16     201  8.0   82  20         1   143 1.0091025      9   (140,210]
#> 144    13     238 12.6   64  21         1   144 0.9877918      9   (210,280]
#> 145    23      14  9.2   71  22         1   145 1.0007646      9      (0,70]
#> 146    36     139 10.3   81  23         1   146 0.9880016      9    (70,140]
#> 147     7      49 10.3   69  24         1   147 0.9926906      9      (0,70]
#> 148    14      20 16.6   63  25         1   148 1.0072197      9      (0,70]
#> 149    30     193  6.9   70  26         1   149 0.9985280      9   (140,210]
#> 150    NA     145 13.2   77  27         1   150 1.0001786      9   (140,210]
#> 151    14     191 14.3   75  28         1   151 1.0024673      9   (140,210]
#> 152    18     131  8.0   76  29         1   152 0.9968826      9    (70,140]
#> 153    20     223 11.5   68  30         1   153 1.0056592      9   (210,280]
#>     Ozone_chac   Ozone_f Ozone_high  Ozone_imp
#> 1      (40,60]   (40,60]      FALSE  41.000000
#> 2      (20,40]   (20,40]      FALSE  36.000000
#> 3       (0,20]    (0,20]      FALSE  12.000000
#> 4       (0,20]    (0,20]      FALSE  18.000000
#> 5         <NA>      <NA>         NA         NA
#> 6      (20,40]   (20,40]      FALSE  28.000000
#> 7      (20,40]   (20,40]      FALSE  23.000000
#> 8       (0,20]    (0,20]      FALSE  19.000000
#> 9       (0,20]    (0,20]      FALSE   8.000000
#> 10        <NA>      <NA>         NA  20.230008
#> 11      (0,20]    (0,20]      FALSE   7.000000
#> 12      (0,20]    (0,20]      FALSE  16.000000
#> 13      (0,20]    (0,20]      FALSE  11.000000
#> 14      (0,20]    (0,20]      FALSE  14.000000
#> 15      (0,20]    (0,20]      FALSE  18.000000
#> 16      (0,20]    (0,20]      FALSE  14.000000
#> 17     (20,40]   (20,40]      FALSE  34.000000
#> 18      (0,20]    (0,20]      FALSE   6.000000
#> 19     (20,40]   (20,40]      FALSE  30.000000
#> 20      (0,20]    (0,20]      FALSE  11.000000
#> 21      (0,20]    (0,20]      FALSE   1.000000
#> 22      (0,20]    (0,20]      FALSE  11.000000
#> 23      (0,20]    (0,20]      FALSE   4.000000
#> 24     (20,40]   (20,40]      FALSE  32.000000
#> 25        <NA>      <NA>         NA   6.139656
#> 26        <NA>      <NA>         NA   9.527552
#> 27        <NA>      <NA>         NA         NA
#> 28     (20,40]   (20,40]      FALSE  23.000000
#> 29     (40,60]   (40,60]       TRUE  45.000000
#> 30   (100,120] (100,120]       TRUE 115.000000
#> 31     (20,40]   (20,40]      FALSE  37.000000
#> 32        <NA>      <NA>         NA  37.907856
#> 33        <NA>      <NA>         NA  36.414466
#> 34        <NA>      <NA>         NA  14.242672
#> 35        <NA>      <NA>         NA  37.946011
#> 36        <NA>      <NA>         NA  54.995630
#> 37        <NA>      <NA>         NA  32.404855
#> 38     (20,40]   (20,40]      FALSE  29.000000
#> 39        <NA>      <NA>         NA  74.522731
#> 40     (60,80]   (60,80]       TRUE  71.000000
#> 41     (20,40]   (20,40]      FALSE  39.000000
#> 42        <NA>      <NA>         NA  66.801551
#> 43        <NA>      <NA>         NA  89.472204
#> 44     (20,40]   (20,40]      FALSE  23.000000
#> 45        <NA>      <NA>         NA  40.026038
#> 46        <NA>      <NA>         NA  34.766945
#> 47     (20,40]   (20,40]      FALSE  21.000000
#> 48     (20,40]   (20,40]      FALSE  37.000000
#> 49      (0,20]    (0,20]      FALSE  20.000000
#> 50      (0,20]    (0,20]      FALSE  12.000000
#> 51      (0,20]    (0,20]      FALSE  13.000000
#> 52        <NA>      <NA>         NA  30.744434
#> 53        <NA>      <NA>         NA  29.706460
#> 54        <NA>      <NA>         NA  29.379999
#> 55        <NA>      <NA>         NA  45.034269
#> 56        <NA>      <NA>         NA  27.343695
#> 57        <NA>      <NA>         NA  30.991078
#> 58        <NA>      <NA>         NA  15.995600
#> 59        <NA>      <NA>         NA  32.567271
#> 60        <NA>      <NA>         NA  14.812372
#> 61        <NA>      <NA>         NA  36.878057
#> 62   (120,140] (120,140]       TRUE 135.000000
#> 63     (40,60]   (40,60]       TRUE  49.000000
#> 64     (20,40]   (20,40]      FALSE  32.000000
#> 65        <NA>      <NA>         NA  31.969254
#> 66     (60,80]   (60,80]       TRUE  64.000000
#> 67     (20,40]   (20,40]      FALSE  40.000000
#> 68     (60,80]   (60,80]       TRUE  77.000000
#> 69    (80,100]  (80,100]       TRUE  97.000000
#> 70    (80,100]  (80,100]       TRUE  97.000000
#> 71    (80,100]  (80,100]       TRUE  85.000000
#> 72        <NA>      <NA>         NA  36.748717
#> 73      (0,20]    (0,20]      FALSE  10.000000
#> 74     (20,40]   (20,40]      FALSE  27.000000
#> 75        <NA>      <NA>         NA  46.560554
#> 76      (0,20]    (0,20]      FALSE   7.000000
#> 77     (40,60]   (40,60]       TRUE  48.000000
#> 78     (20,40]   (20,40]      FALSE  35.000000
#> 79     (60,80]   (60,80]       TRUE  61.000000
#> 80     (60,80]   (60,80]       TRUE  79.000000
#> 81     (60,80]   (60,80]       TRUE  63.000000
#> 82      (0,20]    (0,20]      FALSE  16.000000
#> 83        <NA>      <NA>         NA  44.022068
#> 84        <NA>      <NA>         NA  45.097103
#> 85     (60,80]   (60,80]       TRUE  80.000000
#> 86   (100,120] (100,120]       TRUE 108.000000
#> 87      (0,20]    (0,20]      FALSE  20.000000
#> 88     (40,60]   (40,60]       TRUE  52.000000
#> 89    (80,100]  (80,100]       TRUE  82.000000
#> 90     (40,60]   (40,60]       TRUE  50.000000
#> 91     (60,80]   (60,80]       TRUE  64.000000
#> 92     (40,60]   (40,60]       TRUE  59.000000
#> 93     (20,40]   (20,40]      FALSE  39.000000
#> 94      (0,20]    (0,20]      FALSE   9.000000
#> 95      (0,20]    (0,20]      FALSE  16.000000
#> 96     (60,80]   (60,80]       TRUE  78.000000
#> 97     (20,40]   (20,40]      FALSE  35.000000
#> 98     (60,80]   (60,80]       TRUE  66.000000
#> 99   (120,140] (120,140]       TRUE 122.000000
#> 100   (80,100]  (80,100]       TRUE  89.000000
#> 101  (100,120] (100,120]       TRUE 110.000000
#> 102       <NA>      <NA>         NA  65.786335
#> 103       <NA>      <NA>         NA  34.520176
#> 104    (40,60]   (40,60]       TRUE  44.000000
#> 105    (20,40]   (20,40]      FALSE  28.000000
#> 106    (60,80]   (60,80]       TRUE  65.000000
#> 107       <NA>      <NA>         NA  19.769399
#> 108    (20,40]   (20,40]      FALSE  22.000000
#> 109    (40,60]   (40,60]       TRUE  59.000000
#> 110    (20,40]   (20,40]      FALSE  23.000000
#> 111    (20,40]   (20,40]      FALSE  31.000000
#> 112    (40,60]   (40,60]       TRUE  44.000000
#> 113    (20,40]   (20,40]      FALSE  21.000000
#> 114     (0,20]    (0,20]      FALSE   9.000000
#> 115       <NA>      <NA>         NA  26.618954
#> 116    (40,60]   (40,60]       TRUE  45.000000
#> 117       <NA>      <NA>       TRUE 168.000000
#> 118    (60,80]   (60,80]       TRUE  73.000000
#> 119       <NA>      <NA>         NA  60.502027
#> 120    (60,80]   (60,80]       TRUE  76.000000
#> 121  (100,120] (100,120]       TRUE 118.000000
#> 122   (80,100]  (80,100]       TRUE  84.000000
#> 123   (80,100]  (80,100]       TRUE  85.000000
#> 124   (80,100]  (80,100]       TRUE  96.000000
#> 125    (60,80]   (60,80]       TRUE  78.000000
#> 126    (60,80]   (60,80]       TRUE  73.000000
#> 127   (80,100]  (80,100]       TRUE  91.000000
#> 128    (40,60]   (40,60]       TRUE  47.000000
#> 129    (20,40]   (20,40]      FALSE  32.000000
#> 130     (0,20]    (0,20]      FALSE  20.000000
#> 131    (20,40]   (20,40]      FALSE  23.000000
#> 132    (20,40]   (20,40]      FALSE  21.000000
#> 133    (20,40]   (20,40]      FALSE  24.000000
#> 134    (40,60]   (40,60]       TRUE  44.000000
#> 135    (20,40]   (20,40]      FALSE  21.000000
#> 136    (20,40]   (20,40]      FALSE  28.000000
#> 137     (0,20]    (0,20]      FALSE   9.000000
#> 138     (0,20]    (0,20]      FALSE  13.000000
#> 139    (40,60]   (40,60]       TRUE  46.000000
#> 140     (0,20]    (0,20]      FALSE  18.000000
#> 141     (0,20]    (0,20]      FALSE  13.000000
#> 142    (20,40]   (20,40]      FALSE  24.000000
#> 143     (0,20]    (0,20]      FALSE  16.000000
#> 144     (0,20]    (0,20]      FALSE  13.000000
#> 145    (20,40]   (20,40]      FALSE  23.000000
#> 146    (20,40]   (20,40]      FALSE  36.000000
#> 147     (0,20]    (0,20]      FALSE   7.000000
#> 148     (0,20]    (0,20]      FALSE  14.000000
#> 149    (20,40]   (20,40]      FALSE  30.000000
#> 150       <NA>      <NA>         NA  20.928118
#> 151     (0,20]    (0,20]      FALSE  14.000000
#> 152     (0,20]    (0,20]      FALSE  18.000000
#> 153     (0,20]    (0,20]      FALSE  20.000000

# data.table: PMM grouped
data(air_miss)
setDT(air_miss)
air_miss[, Ozone_pmm := fill_NA_N(
  x = .SD, model = "pmm",
  posit_y = "Ozone",
  posit_x = c("Wind", "Temp", "Intercept"),
  k = 20
), by = .(groups)]
#>      Ozone Solar.R  Wind  Temp   Day Intercept index   weights groups
#>      <num>   <num> <num> <num> <num>     <num> <num>     <num> <fctr>
#>   1:    41     190   7.4    67     1         1     1 1.0186350      5
#>   2:    36     118   8.0    72     2         1     2 1.0107583      5
#>   3:    12     149  12.6    74     3         1     3 0.9891023      5
#>   4:    18     313  11.5    62     4         1     4 0.9913450      5
#>   5:    NA      NA  14.3    56     5         1     5 0.9945367      5
#>  ---                                                                 
#> 149:    30     193   6.9    70    26         1   149 0.9985280      9
#> 150:    NA     145  13.2    77    27         1   150 1.0001786      9
#> 151:    14     191  14.3    75    28         1   151 1.0024673      9
#> 152:    18     131   8.0    76    29         1   152 0.9968826      9
#> 153:    20     223  11.5    68    30         1   153 1.0056592      9
#>      x_character Ozone_chac Ozone_f Ozone_high Ozone_pmm
#>           <char>     <char>  <fctr>     <lgcl>     <num>
#>   1:   (140,210]    (40,60] (40,60]      FALSE        41
#>   2:    (70,140]    (20,40] (20,40]      FALSE        36
#>   3:   (140,210]     (0,20]  (0,20]      FALSE        12
#>   4:   (280,350]     (0,20]  (0,20]      FALSE        18
#>   5:        <NA>       <NA>    <NA>         NA        14
#>  ---                                                    
#> 149:   (140,210]    (20,40] (20,40]      FALSE        30
#> 150:   (140,210]       <NA>    <NA>         NA        28
#> 151:   (140,210]     (0,20]  (0,20]      FALSE        14
#> 152:    (70,140]     (0,20]  (0,20]      FALSE        18
#> 153:   (210,280]     (0,20]  (0,20]      FALSE        20

# See the vignette for full examples:
# vignette("miceFast-intro", package = "miceFast")