如何在 R 中使用 data.table 填充缺失值的行?


有时我们需要用缺失值替换数据,而不是填充缺失值。当缺失值用数字编码或实际值对于数据研究无用或无意义时,可能需要这样做。此外,我们可能希望将来用其他内容替换这些值。

查看以下示例,了解如何使用 data.table 填充缺失值的行。

示例 1

以下代码片段创建了一个 data.table 对象:

library(data.table)
x1<-rnorm(20)
x2<-rnorm(20)
x3<-rnorm(20)
DT1<-data.table(x1,x2,x3)
DT1

创建了以下 data.table 对象:

        x1           x2           x3
1:   0.359330986   0.20756943  -1.41681109
2:   3.030837814  -0.90236706   0.18453973
3:   0.094325185  -0.62989777  -0.76818543
4:  -0.605302247   0.57308532  -0.26006696
5:   0.589317918  -0.48431919   0.29462134
6:   0.924100008  -1.43570087  -1.68280918
7:  -1.211456354   0.86749925   1.39952788
8:   0.061726522   1.10284992  -0.61436950
9:  -0.981008050   0.18694454   2.67624706
10: -1.386289393   1.60893091   2.05774337
11: -0.978221580  -0.20008714  -1.03519166
12: -1.553948892  -1.36348786  -0.37988549
13: -1.002634550  -1.00437648   0.44634500
14:  0.280758507  -0.76264247  -0.36987504
15: -0.002528128   1.68233987   0.16512468
16:  1.200738477  -0.13188273  -0.19674097
17:  1.062584867   0.66075529  -0.06017969
18: -0.956870759   0.92754861   0.91910574
19: -1.323343765  -2.20655283   1.18144943
20: -1.618360372  -0.02947935  -0.53886698

为了用缺失值填充 DT1 的第一行,请将以下代码添加到上面的代码片段中:

DT1[1,(names(DT1)):=.SD[NA]]
DT1

输出

如果将以上所有代码片段作为一个程序执行,则会生成以下输出:

          x1        x2            x3
1:       NA         NA            NA
2:   3.030837814  -0.90236706   0.18453973
3:   0.094325185  -0.62989777  -0.76818543
4:  -0.605302247   0.57308532  -0.26006696
5:   0.589317918  -0.48431919   0.29462134
6:   0.924100008  -1.43570087  -1.68280918
7:  -1.211456354   0.86749925   1.39952788
8:   0.061726522   1.10284992  -0.61436950
9:  -0.981008050   0.18694454   2.67624706
10: -1.386289393   1.60893091   2.05774337
11: -0.978221580  -0.20008714  -1.03519166
12: -1.553948892  -1.36348786  -0.37988549
13: -1.002634550  -1.00437648   0.44634500
14:  0.280758507  -0.76264247  -0.36987504
15: -0.002528128   1.68233987   0.16512468
16:  1.200738477  -0.13188273  -0.19674097
17:  1.062584867   0.66075529  -0.06017969
18: -0.956870759   0.92754861   0.91910574
19: -1.323343765  -2.20655283   1.18144943
20: -1.618360372  -0.02947935  -0.53886698

示例 2

以下代码片段创建了一个 data.table 对象:

y1<-rpois(20,1)
y2<-rpois(20,5)
y3<-rpois(20,1)
y4<-rpois(20,2)
DT2<-data.table(y1,y2,y3,y4)
DT2

创建了以下 data.table 对象:

    y1 y2  y3 y4
1:  2  11  1  6
2:  1   4  1  3
3:  0   4  0  0
4:  2   7  2  1
5:  1   7  2  1
6:  1   5  1  1
7:  0   8  0  1
8:  3   6  2  3
9:  2   5  2  2
10: 1   8  0  3
11: 0   7  1  0
12: 1   3  1  2
13: 3   5  0  5
14: 0   0  2  2
15: 2   6  1  4
16: 0   7  2  2
17: 1   5  3  0
18: 1   6  0  1
19: 3   7  2  3
20: 0   5  0  1

为了用缺失值填充 DT2 的第五行,请将以下代码添加到上面的代码片段中:

DT2[5,(names(DT2)):=.SD[NA]]
DT2

输出

如果将以上所有代码片段作为一个程序执行,则会生成以下输出:

    y1  y2 y3 y4
1:  2  11  1  6
2:  1   4  1  3
3:  0   4  0  0
4:  2   7  2  1
5: NA  NA NA NA
6:  1  5  1   1
7:  0  8  0   1
8:  3  6  2   3
9:  2  5  2   2
10: 1  8  0   3
11: 0  7  1   0
12: 1  3  1   2
13: 3  5  0   5
14: 0  0  2   2
15: 2  6  1   4
16: 0  7  2   2
17: 1  5  3   0
18: 1  6  0   1
19: 3  7  2   3
20: 0  5  0   1

更新于:2021年11月10日

436 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告