将一列中的所有值除以单独数据框中的值(列名匹配)

时间:2016-02-02 22:27:10

标签: r math dataframe

我需要将第一个数据帧的给定列中的每个值除以第二个数据帧的相应列名中的值。例如,我需要将0 demand_copy列中的每个值除以25.5,将1列中的每个值除以13.0等,并获得结构相同的输出作为第一个数据框

如何在R中做到这一点?


> head(demand_copy)
   0  1  2  3  4  5  6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23
1 25  9 14  3 10 10 28 175 406 230 155 151 202 167 179 185 275 298 280 185 110  84  93  51
2 36 17  9  3  2  7 32  88 110 131  89 125 149 165 161 147 178 309 339 201 115  78  67  39
3 10  3  5 10  0 11 15  58 129 110  49  62  62 100  70  73  72  86 116  61  49  37  26  22
4 24 15 10  5  3  4 39  53 108  98  80 118 116 110 135 158 157 196 176 132 118  94  91 102
5 40 45 15  9 16 37 75 205 497 527 362 287 316 353 359 309 365 653 598 468 328 242 168 102
6  0  0  1  2  0  0 11  56  26  12  21   6  27  15  18   5  14  19  25   6   4   0   1   0


> medians
   medians
0     25.5
1     13.0
2      8.0
3      4.0
4      4.0
5     10.0
6     38.5
7    106.5
8    205.5
9    164.0
10   111.5
11   130.5
12   160.0
13   164.5
14   170.0
15   183.0
16   202.0
17   282.0
18   256.5
19   178.0
20   109.0
21    80.0
22    60.5
23    41.0

1 个答案:

答案 0 :(得分:4)

您可以使用

t(t(demand_copy) / medians[, 1])

sweep(demand_copy, 2, medians[, 1], "/")

请注意,第一种方法返回一个矩阵,而第二种方法返回一个数据帧。

我还建议将medians作为向量,而不是具有单列的数据框。然后,您可以在上面的两行中使用medians代替medians[, 1]