Regular 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(x, model, posit_y, posit_x, w = NULL, logreg = FALSE, ridge = 1e-06)

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

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

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

Arguments

x

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

model

a character - possible options ("lda","lm_pred","lm_bayes","lm_noise")

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

ridge

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

Value

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

Methods (by class)

  • fill_NA(data.frame): S3 method for data.frame

  • fill_NA(data.table): s3 method for data.table

  • fill_NA(matrix): S3 method for matrix

Note

There is assumed that users add the intercept by their own. The miceFast module provides the most efficient environment, the second recommended option is to use data.table and the numeric matrix data type. The lda model is assessed only if there are more than 15 complete observations and for the lms models if number of independent variables is smaller than number of observations.

Examples

library(miceFast)
library(dplyr)
#> 
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#> 
#>     filter, lag
#> The following objects are masked from ‘package:base’:
#> 
#>     intersect, setdiff, setequal, union
library(data.table)
#> 
#> Attaching package: ‘data.table’
#> The following objects are masked from ‘package:dplyr’:
#> 
#>     between, first, last

data(air_miss)

# dplyr: continuous variable with Bayesian linear model
air_miss %>%
  mutate(Ozone_imp = fill_NA(
    x = ., model = "lm_bayes",
    posit_y = "Ozone", posit_x = c("Solar.R", "Wind", "Temp")
  ))
#>     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  31.124953
#> 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 -63.716975
#> 26        <NA>      <NA>         NA  14.310568
#> 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  24.987382
#> 33        <NA>      <NA>         NA  47.794673
#> 34        <NA>      <NA>         NA  24.201507
#> 35        <NA>      <NA>         NA  72.776342
#> 36        <NA>      <NA>         NA  64.607265
#> 37        <NA>      <NA>         NA  44.348397
#> 38     (20,40]   (20,40]      FALSE  29.000000
#> 39        <NA>      <NA>         NA  55.381153
#> 40     (60,80]   (60,80]       TRUE  71.000000
#> 41     (20,40]   (20,40]      FALSE  39.000000
#> 42        <NA>      <NA>         NA  39.614555
#> 43        <NA>      <NA>         NA  89.518648
#> 44     (20,40]   (20,40]      FALSE  23.000000
#> 45        <NA>      <NA>         NA  49.647783
#> 46        <NA>      <NA>         NA  40.016245
#> 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  50.310951
#> 53        <NA>      <NA>         NA 107.855017
#> 54        <NA>      <NA>         NA  98.714671
#> 55        <NA>      <NA>         NA  45.341713
#> 56        <NA>      <NA>         NA  29.479901
#> 57        <NA>      <NA>         NA  77.108448
#> 58        <NA>      <NA>         NA  31.494130
#> 59        <NA>      <NA>         NA  17.710995
#> 60        <NA>      <NA>         NA   3.467952
#> 61        <NA>      <NA>         NA  19.729031
#> 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  49.361794
#> 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  31.954823
#> 73      (0,20]    (0,20]      FALSE  10.000000
#> 74     (20,40]   (20,40]      FALSE  27.000000
#> 75        <NA>      <NA>         NA  47.292303
#> 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  51.585814
#> 84        <NA>      <NA>         NA  42.635715
#> 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  86.062910
#> 103       <NA>      <NA>         NA  45.822671
#> 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  31.096150
#> 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  29.801207
#> 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  83.070172
#> 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   9.602626
#> 151     (0,20]    (0,20]      FALSE  14.000000
#> 152     (0,20]    (0,20]      FALSE  18.000000
#> 153     (0,20]    (0,20]      FALSE  20.000000

# dplyr: categorical variable with LDA
air_miss %>%
  mutate(x_char_imp = fill_NA(
    x = ., model = "lda",
    posit_y = "x_character", posit_x = c("Wind", "Temp")
  ))
#>     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 x_char_imp
#> 1      (40,60]   (40,60]      FALSE  (140,210]
#> 2      (20,40]   (20,40]      FALSE   (70,140]
#> 3       (0,20]    (0,20]      FALSE  (140,210]
#> 4       (0,20]    (0,20]      FALSE  (280,350]
#> 5         <NA>      <NA>         NA     (0,70]
#> 6      (20,40]   (20,40]      FALSE     (0,70]
#> 7      (20,40]   (20,40]      FALSE  (280,350]
#> 8       (0,20]    (0,20]      FALSE   (70,140]
#> 9       (0,20]    (0,20]      FALSE     (0,70]
#> 10        <NA>      <NA>         NA  (140,210]
#> 11      (0,20]    (0,20]      FALSE  (210,280]
#> 12      (0,20]    (0,20]      FALSE  (210,280]
#> 13      (0,20]    (0,20]      FALSE  (280,350]
#> 14      (0,20]    (0,20]      FALSE  (210,280]
#> 15      (0,20]    (0,20]      FALSE     (0,70]
#> 16      (0,20]    (0,20]      FALSE  (280,350]
#> 17     (20,40]   (20,40]      FALSE  (280,350]
#> 18      (0,20]    (0,20]      FALSE   (70,140]
#> 19     (20,40]   (20,40]      FALSE  (280,350]
#> 20      (0,20]    (0,20]      FALSE     (0,70]
#> 21      (0,20]    (0,20]      FALSE     (0,70]
#> 22      (0,20]    (0,20]      FALSE  (280,350]
#> 23      (0,20]    (0,20]      FALSE     (0,70]
#> 24     (20,40]   (20,40]      FALSE   (70,140]
#> 25        <NA>      <NA>         NA     (0,70]
#> 26        <NA>      <NA>         NA  (210,280]
#> 27        <NA>      <NA>         NA     (0,70]
#> 28     (20,40]   (20,40]      FALSE     (0,70]
#> 29     (40,60]   (40,60]       TRUE  (210,280]
#> 30   (100,120] (100,120]       TRUE  (210,280]
#> 31     (20,40]   (20,40]      FALSE  (210,280]
#> 32        <NA>      <NA>         NA  (280,350]
#> 33        <NA>      <NA>         NA  (280,350]
#> 34        <NA>      <NA>         NA  (210,280]
#> 35        <NA>      <NA>         NA  (140,210]
#> 36        <NA>      <NA>         NA  (210,280]
#> 37        <NA>      <NA>         NA  (210,280]
#> 38     (20,40]   (20,40]      FALSE   (70,140]
#> 39        <NA>      <NA>         NA  (210,280]
#> 40     (60,80]   (60,80]       TRUE  (280,350]
#> 41     (20,40]   (20,40]      FALSE  (280,350]
#> 42        <NA>      <NA>         NA  (210,280]
#> 43        <NA>      <NA>         NA  (210,280]
#> 44     (20,40]   (20,40]      FALSE  (140,210]
#> 45        <NA>      <NA>         NA  (280,350]
#> 46        <NA>      <NA>         NA  (280,350]
#> 47     (20,40]   (20,40]      FALSE  (140,210]
#> 48     (20,40]   (20,40]      FALSE  (280,350]
#> 49      (0,20]    (0,20]      FALSE     (0,70]
#> 50      (0,20]    (0,20]      FALSE   (70,140]
#> 51      (0,20]    (0,20]      FALSE   (70,140]
#> 52        <NA>      <NA>         NA  (140,210]
#> 53        <NA>      <NA>         NA     (0,70]
#> 54        <NA>      <NA>         NA   (70,140]
#> 55        <NA>      <NA>         NA  (210,280]
#> 56        <NA>      <NA>         NA   (70,140]
#> 57        <NA>      <NA>         NA   (70,140]
#> 58        <NA>      <NA>         NA     (0,70]
#> 59        <NA>      <NA>         NA   (70,140]
#> 60        <NA>      <NA>         NA     (0,70]
#> 61        <NA>      <NA>         NA   (70,140]
#> 62   (120,140] (120,140]       TRUE  (210,280]
#> 63     (40,60]   (40,60]       TRUE  (210,280]
#> 64     (20,40]   (20,40]      FALSE  (210,280]
#> 65        <NA>      <NA>         NA   (70,140]
#> 66     (60,80]   (60,80]       TRUE  (140,210]
#> 67     (20,40]   (20,40]      FALSE  (280,350]
#> 68     (60,80]   (60,80]       TRUE  (210,280]
#> 69    (80,100]  (80,100]       TRUE  (210,280]
#> 70    (80,100]  (80,100]       TRUE  (210,280]
#> 71    (80,100]  (80,100]       TRUE  (140,210]
#> 72        <NA>      <NA>         NA   (70,140]
#> 73      (0,20]    (0,20]      FALSE  (210,280]
#> 74     (20,40]   (20,40]      FALSE  (140,210]
#> 75        <NA>      <NA>         NA  (280,350]
#> 76      (0,20]    (0,20]      FALSE     (0,70]
#> 77     (40,60]   (40,60]       TRUE  (210,280]
#> 78     (20,40]   (20,40]      FALSE  (210,280]
#> 79     (60,80]   (60,80]       TRUE  (280,350]
#> 80     (60,80]   (60,80]       TRUE  (140,210]
#> 81     (60,80]   (60,80]       TRUE  (210,280]
#> 82      (0,20]    (0,20]      FALSE     (0,70]
#> 83        <NA>      <NA>         NA  (210,280]
#> 84        <NA>      <NA>         NA  (280,350]
#> 85     (60,80]   (60,80]       TRUE  (280,350]
#> 86   (100,120] (100,120]       TRUE  (210,280]
#> 87      (0,20]    (0,20]      FALSE   (70,140]
#> 88     (40,60]   (40,60]       TRUE   (70,140]
#> 89    (80,100]  (80,100]       TRUE  (210,280]
#> 90     (40,60]   (40,60]       TRUE  (210,280]
#> 91     (60,80]   (60,80]       TRUE  (210,280]
#> 92     (40,60]   (40,60]       TRUE  (210,280]
#> 93     (20,40]   (20,40]      FALSE   (70,140]
#> 94      (0,20]    (0,20]      FALSE     (0,70]
#> 95      (0,20]    (0,20]      FALSE   (70,140]
#> 96     (60,80]   (60,80]       TRUE  (210,280]
#> 97     (20,40]   (20,40]      FALSE  (210,280]
#> 98     (60,80]   (60,80]       TRUE  (210,280]
#> 99   (120,140] (120,140]       TRUE  (210,280]
#> 100   (80,100]  (80,100]       TRUE  (210,280]
#> 101  (100,120] (100,120]       TRUE  (140,210]
#> 102       <NA>      <NA>         NA  (210,280]
#> 103       <NA>      <NA>         NA   (70,140]
#> 104    (40,60]   (40,60]       TRUE  (140,210]
#> 105    (20,40]   (20,40]      FALSE  (210,280]
#> 106    (60,80]   (60,80]       TRUE  (140,210]
#> 107       <NA>      <NA>         NA     (0,70]
#> 108    (20,40]   (20,40]      FALSE   (70,140]
#> 109    (40,60]   (40,60]       TRUE     (0,70]
#> 110    (20,40]   (20,40]      FALSE   (70,140]
#> 111    (20,40]   (20,40]      FALSE  (210,280]
#> 112    (40,60]   (40,60]       TRUE  (140,210]
#> 113    (20,40]   (20,40]      FALSE  (210,280]
#> 114     (0,20]    (0,20]      FALSE     (0,70]
#> 115       <NA>      <NA>         NA  (210,280]
#> 116    (40,60]   (40,60]       TRUE  (210,280]
#> 117       <NA>      <NA>       TRUE  (210,280]
#> 118    (60,80]   (60,80]       TRUE  (210,280]
#> 119       <NA>      <NA>         NA  (140,210]
#> 120    (60,80]   (60,80]       TRUE  (140,210]
#> 121  (100,120] (100,120]       TRUE  (210,280]
#> 122   (80,100]  (80,100]       TRUE  (210,280]
#> 123   (80,100]  (80,100]       TRUE  (140,210]
#> 124   (80,100]  (80,100]       TRUE  (140,210]
#> 125    (60,80]   (60,80]       TRUE  (140,210]
#> 126    (60,80]   (60,80]       TRUE  (140,210]
#> 127   (80,100]  (80,100]       TRUE  (140,210]
#> 128    (40,60]   (40,60]       TRUE   (70,140]
#> 129    (20,40]   (20,40]      FALSE   (70,140]
#> 130     (0,20]    (0,20]      FALSE  (210,280]
#> 131    (20,40]   (20,40]      FALSE  (210,280]
#> 132    (20,40]   (20,40]      FALSE  (210,280]
#> 133    (20,40]   (20,40]      FALSE  (210,280]
#> 134    (40,60]   (40,60]       TRUE  (210,280]
#> 135    (20,40]   (20,40]      FALSE  (210,280]
#> 136    (20,40]   (20,40]      FALSE  (210,280]
#> 137     (0,20]    (0,20]      FALSE     (0,70]
#> 138     (0,20]    (0,20]      FALSE   (70,140]
#> 139    (40,60]   (40,60]       TRUE  (210,280]
#> 140     (0,20]    (0,20]      FALSE  (210,280]
#> 141     (0,20]    (0,20]      FALSE     (0,70]
#> 142    (20,40]   (20,40]      FALSE  (210,280]
#> 143     (0,20]    (0,20]      FALSE  (140,210]
#> 144     (0,20]    (0,20]      FALSE  (210,280]
#> 145    (20,40]   (20,40]      FALSE     (0,70]
#> 146    (20,40]   (20,40]      FALSE   (70,140]
#> 147     (0,20]    (0,20]      FALSE     (0,70]
#> 148     (0,20]    (0,20]      FALSE     (0,70]
#> 149    (20,40]   (20,40]      FALSE  (140,210]
#> 150       <NA>      <NA>         NA  (140,210]
#> 151     (0,20]    (0,20]      FALSE  (140,210]
#> 152     (0,20]    (0,20]      FALSE   (70,140]
#> 153     (0,20]    (0,20]      FALSE  (210,280]

# dplyr: grouped imputation with weights
air_miss %>%
  group_by(groups) %>%
  do(mutate(., Solar_R_imp = fill_NA(
    x = ., model = "lm_pred",
    posit_y = "Solar.R",
    posit_x = c("Wind", "Temp", "Intercept"),
    w = .[["weights"]]
  ))) %>%
  ungroup()
#> # A tibble: 153 × 14
#>    Ozone Solar.R  Wind  Temp   Day Intercept index weights groups x_character
#>    <dbl>   <dbl> <dbl> <dbl> <dbl>     <dbl> <dbl>   <dbl> <fct>  <chr>      
#>  1    41     190   7.4    67     1         1     1   1.02  5      (140,210]  
#>  2    36     118   8      72     2         1     2   1.01  5      (70,140]   
#>  3    12     149  12.6    74     3         1     3   0.989 5      (140,210]  
#>  4    18     313  11.5    62     4         1     4   0.991 5      (280,350]  
#>  5    NA      NA  14.3    56     5         1     5   0.995 5      NA         
#>  6    28      NA  14.9    66     6         1     6   1.01  5      NA         
#>  7    23     299   8.6    65     7         1     7   0.993 5      (280,350]  
#>  8    19      99  13.8    59     8         1     8   0.996 5      (70,140]   
#>  9     8      19  20.1    61     9         1     9   1.02  5      (0,70]     
#> 10    NA     194   8.6    69    10         1    10   0.995 5      (140,210]  
#> # ℹ 143 more rows
#> # ℹ 4 more variables: Ozone_chac <chr>, Ozone_f <fct>, Ozone_high <lgl>,
#> #   Solar_R_imp <dbl>

# data.table
data(air_miss)
setDT(air_miss)
air_miss[, Ozone_imp := fill_NA(
  x = .SD, model = "lm_bayes",
  posit_y = "Ozone", posit_x = c("Solar.R", "Wind", "Temp")
)]
#>      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_imp
#>           <char>     <char>  <fctr>     <lgcl>     <num>
#>   1:   (140,210]    (40,60] (40,60]      FALSE  41.00000
#>   2:    (70,140]    (20,40] (20,40]      FALSE  36.00000
#>   3:   (140,210]     (0,20]  (0,20]      FALSE  12.00000
#>   4:   (280,350]     (0,20]  (0,20]      FALSE  18.00000
#>   5:        <NA>       <NA>    <NA>         NA        NA
#>  ---                                                    
#> 149:   (140,210]    (20,40] (20,40]      FALSE  30.00000
#> 150:   (140,210]       <NA>    <NA>         NA  15.84315
#> 151:   (140,210]     (0,20]  (0,20]      FALSE  14.00000
#> 152:    (70,140]     (0,20]  (0,20]      FALSE  18.00000
#> 153:   (210,280]     (0,20]  (0,20]      FALSE  20.00000

# data.table: grouped
air_miss[, Solar_R_imp := fill_NA(
  x = .SD, model = "lm_pred",
  posit_y = "Solar.R",
  posit_x = c("Wind", "Temp", "Intercept"),
  w = .SD[["weights"]]
), 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_imp Solar_R_imp
#>           <char>     <char>  <fctr>     <lgcl>     <num>       <num>
#>   1:   (140,210]    (40,60] (40,60]      FALSE  41.00000     190.000
#>   2:    (70,140]    (20,40] (20,40]      FALSE  36.00000     118.000
#>   3:   (140,210]     (0,20]  (0,20]      FALSE  12.00000     149.000
#>   4:   (280,350]     (0,20]  (0,20]      FALSE  18.00000     313.000
#>   5:        <NA>       <NA>    <NA>         NA        NA     102.995
#>  ---                                                                
#> 149:   (140,210]    (20,40] (20,40]      FALSE  30.00000     193.000
#> 150:   (140,210]       <NA>    <NA>         NA  15.84315     145.000
#> 151:   (140,210]     (0,20]  (0,20]      FALSE  14.00000     191.000
#> 152:    (70,140]     (0,20]  (0,20]      FALSE  18.00000     131.000
#> 153:   (210,280]     (0,20]  (0,20]      FALSE  20.00000     223.000

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