Fillna 同时保持连续尺度
Fill NA while keeping continous scale
我想知道是否有一种方法可以填充 NA 值,同时保持数字向量的连续比例。
假设我有这样一个向量:
set.seed(55)
as.list(missForest::prodNA(data.frame(a=c(1:100)),noNA=0.3))
$a
[1] 1 NA 3 NA 5 NA 7 8 9 10 11 12 13 14 15 16 17 18 19 NA
[21] 21 22 23 24 NA 26 27 28 29 30 31 32 33 NA 35 NA 37 38 39 40
[41] 41 42 43 NA 45 46 47 48 NA 50 51 52 53 54 55 56 57 NA NA 60
[61] 61 62 NA NA 65 66 NA NA NA NA NA NA NA 74 75 NA 77 NA 79 NA
[81] 81 82 NA 84 85 86 NA 88 89 90 91 92 NA 94 95 NA NA NA NA 100
如何获得
> as.list(data.frame(a=c(1:100)))
$a
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[21] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
[41] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
[61] 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
[81] 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
通过填写 NA?
您可以使用 zoo
的 na.spline
x <- missForest::prodNA(data.frame(a=c(1:100)),noNA=0.3)$a
zoo::na.spline(x)
#[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#[16] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#[31] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#[46] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
#[61] 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
#[76] 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
#[91] 91 92 93 94 95 96 97 98 99 100
我想知道是否有一种方法可以填充 NA 值,同时保持数字向量的连续比例。
假设我有这样一个向量:
set.seed(55)
as.list(missForest::prodNA(data.frame(a=c(1:100)),noNA=0.3))
$a
[1] 1 NA 3 NA 5 NA 7 8 9 10 11 12 13 14 15 16 17 18 19 NA
[21] 21 22 23 24 NA 26 27 28 29 30 31 32 33 NA 35 NA 37 38 39 40
[41] 41 42 43 NA 45 46 47 48 NA 50 51 52 53 54 55 56 57 NA NA 60
[61] 61 62 NA NA 65 66 NA NA NA NA NA NA NA 74 75 NA 77 NA 79 NA
[81] 81 82 NA 84 85 86 NA 88 89 90 91 92 NA 94 95 NA NA NA NA 100
如何获得
> as.list(data.frame(a=c(1:100)))
$a
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[21] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
[41] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
[61] 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
[81] 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
通过填写 NA?
您可以使用 zoo
的 na.spline
x <- missForest::prodNA(data.frame(a=c(1:100)),noNA=0.3)$a
zoo::na.spline(x)
#[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#[16] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#[31] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#[46] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
#[61] 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
#[76] 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
#[91] 91 92 93 94 95 96 97 98 99 100