计算列之间的成对比率

时间:2014-10-01 19:42:02

标签: r matrix

         A    B     C     D    E     F
 [1,]  187  174   183   115  101   104
 [2,]  451  166   177   842  101   133
 [3,]  727  171   187 12803   98   134
 [4,] 1532  181   196   730   98   108
 [5,] 4139  188   214 20358  105   159
 [6,]  689  185   211  1633  110   162
 [7,] 1625  184   195  2283  109   114
 [8,]  771  181   190   904  105   110
 [9,]  950  177   190  1033  106   112
[10,]  703  180   191   463  106   110
[11,] 2052  178   188  2585  100   105
[12,] 1161  178   187  2874   99   110
[13,]  214  175   184   173   98   110
[14,]  473  184   191   971  104   111
[15,]  756  185   193 14743  107   114

我有一个类似于上述数据的数据集。 如何根据下一列和前一列之间的数字生成所有比率的矩阵?

       B/A      C/B       D/C      E/D      F/E 
 [1,]  174/187  183/174   115/183  101/115  104/101
 [2,]  
 [3,]  
 [4,] 
 [5,]
 [6,]  
 ...

1 个答案:

答案 0 :(得分:1)

来自ping的建议,但针对数据框列的子集进行了调整(意味着我所做的就是删掉逗号)。

new <- df[-1] / df[-length(df)]
colnames(new) <- paste(names(df)[-1], names(df)[-length(df)], sep = "/")
head(new)
#           B/A      C/B        D/C         E/D      F/E
# 1  0.93048128 1.051724  0.6284153 0.878260870 1.029703
# 2  0.36807095 1.066265  4.7570621 0.119952494 1.316832
# 3  0.23521320 1.093567 68.4652406 0.007654456 1.367347
# 4  0.11814621 1.082873  3.7244898 0.134246575 1.102041
# 5  0.04542160 1.138298 95.1308411 0.005157678 1.514286
# 6  0.26850508 1.140541  7.7393365 0.067360686 1.472727

如果您可能希望对数据应用多个功能,也可以执行

Fun <- function(...) list(...) 
Fun(`/`)[[1]](df[-1], df[-length(df)])