循环遍历Dataframe的列并将值除以另一个数据帧中列名称索引的值?

我有一个像下面这样的数据框,里面有很多列和数据

                 Label 2015-08-24 2015-08-25
   1               AxG   179238.8   174160.3
   2              CHaF   203544.2   199411.9
   3              HHHH   130138.9   129182.2
   4               fLS   146367.0   148708.0
   5               KSU   194584.7   188508.0
   6              MqCC   272922.7   273369.5
   7              BEPU        0.0        0.0
   8              SSEX   107566.4   111552.8
   9               QQQ   248380.4   257064.2
   10              AAA   258735.4   260415.5

我有另一个数据框,其行索引与第一个中的列名相同(在本例中为日期).我想将第一个数据帧的列中的每个值除以第二个数据帧中的相应值

                      totals
      2015-08-24      1741479
      2015-08-25      199411.9

我的第一个想法是做下面的事情(我来自pythonic背景,虽然不久前)

        > for(i in names(df1)){
         + df1[[df1[,i]/df2[i,]]]

但这是我收到的错误:

Error in .subset2(x, i, exact = exact) : no such index at level 1 In
addition: Warning message: In Ops.factor(weights[, i],
weight_totals[i, ]) : ‘/’ not meaningful for factors

有任何想法吗?

最佳答案
我们也可以使用扫描.对于必须在数组上应用值向量的任何情况,它都是一个有用的函数.我们选择边距2来扫描列(我们可以为行选择1):

sweep(df[-1], 2, df2$totals, '/')
#      2015-08-24 2015-08-25
# [1,] 0.10292332  0.8733696
# [2,] 0.11688008  1.0000000
# [3,] 0.07472895  0.6478159
# [4,] 0.08404753  0.7457328
# [5,] 0.11173531  0.9453197
# [6,] 0.15671892  1.3708786
# [7,] 0.00000000  0.0000000
# [8,] 0.06176727  0.5594089
# [9,] 0.14262612  1.2891116
# [10,] 0.14857222  1.3059176

转载注明原文:循环遍历Dataframe的列并将值除以另一个数据帧中列名称索引的值? - 代码日志