我有一个非常大的数据框。列之一是对数据进行分组的“ ID”列。我希望将所有NA替换为每一列的组平均值(而不是每次都命名该列)。
我尝试过aggregate(data[, 2:ncol(data)], list(data$ID), mean)
,它为我提供了每一列的每组平均值(即我希望输入的数字而不是NA),但是我不知道如何做替换部分-如何您是否告诉R用另一个数据框中与列名和组名匹配的值替换NA?
一个简单的例子就是这个;
ID x y z
1 a 12 NA 8
2 a 19 84 NA
3 a NA 21 14
4 a 5 84 73
5 a 56 94 63
6 a 65 23 26
7 a 5 2 16
8 b 5 18 NA
9 b 95 67 67
10 b 5 NA 25
11 b 17 34 16
12 b NA 46 3
13 b 12 25 35
14 b 18 23 12
15 b 5 95 57
16 c 56 18 21
17 c NA 4 46
18 c 58 9 64
19 c 12 78 16
20 c 26 0 17
21 c 4 78 NA
22 c 9 8 2
转到;
ID x y z
1 a 12.0 44.0 8.0
2 a 19.0 84.0 28.6
3 a 23.1 21.0 14.0
4 a 5.0 84.0 73.0
5 a 56.0 94.0 63.0
6 a 65.0 23.0 26.0
7 a 5.0 2.0 16.0
8 b 5.0 18.0 26.9
9 b 95.0 67.0 67.0
10 b 5.0 38.5 25.0
11 b 17.0 34.0 16.0
12 b 19.6 46.0 3.0
13 b 12.0 25.0 35.0
14 b 18.0 23.0 12.0
15 b 5.0 95.0 57.0
16 c 56.0 18.0 21.0
17 c 23.6 4.0 46.0
18 c 58.0 9.0 64.0
19 c 12.0 78.0 16.0
20 c 26.0 27.9 17.0
21 c 4.0 78.0 23.7
22 c 9.0 8.0 2.0