测试每行是否有两列明显不同

时间:2015-08-24 12:43:06

标签: r statistics

我有一个如下例子的表格:

##        Range1               Freq1 Pct1             Freq2 Pct2
## 4     -4 to -3.5               0  0.00               0  0.00
## 5     -3.5 to -3               1  0.04               4  0.13
## 6     -3 to -2.5               0  0.00               3  0.10
## 7     -2.5 to -2               7  0.25              11  0.35
## 8     -2 to -1.5              18  0.64              19  0.61
## 9     -1.5 to -1              43  1.54              46  1.47
## 10    -1 to -0.5             149  5.33             139  4.44
## 11     -0.5 to 0            1375 49.18            1585 50.64
## 12      0 to 0.5             953 34.08            1074 34.31
## 13      0.5 to 1             144  5.15             148  4.73
## 14      1 to 1.5              70  2.50              59  1.88
## 15      1.5 to 2              31  1.11              27  0.86
## 16      2 to 2.5               3  0.11              11  0.35
## 17      2.5 to 3               2  0.07               2  0.06
## 18      3 to 3.5               0  0.00               2  0.06

我想添加一个列,通过检查每一行来测试列Freq1和Freq2是否显着不同(就比例而言)。所以,目标是实现类似......

##        Range1               Freq1 Pct1             Freq2 Pct2   Sig.Test
## 4     -4 to -3.5               0  0.00               0  0.00    1.00
## 5     -3.5 to -3               1  0.04               4  0.13    0.97
## 6     -3 to -2.5               0  0.00               3  0.10    0.99
## 7     -2.5 to -2               7  0.25              11  0.35    0.50
## 8     -2 to -1.5              18  0.64              19  0.61    0.08
## 9     -1.5 to -1              43  1.54              46  1.47    0.47
## 10    -1 to -0.5             149  5.33             139  4.44    ...
## 11     -0.5 to 0            1375 49.18            1585 50.64    ...
## 12      0 to 0.5             953 34.08            1074 34.31    ...
## 13      0.5 to 1             144  5.15             148  4.73    ...
## 14      1 to 1.5              70  2.50              59  1.88    ...
## 15      1.5 to 2              31  1.11              27  0.86    ...
## 16      2 to 2.5               3  0.11              11  0.35    ...
## 17      2.5 to 3               2  0.07               2  0.06    ...
## 18      3 to 3.5               0  0.00               2  0.06    ...

请注意,列中的值已经用于说明目的。

谢谢。

1 个答案:

答案 0 :(得分:1)

也许是这样的:

library(data.table)

Tbl <- setDT( read.table(filename,header=TRUE) )

significanceTest <- function(x,y){exp(-((x-y)^2)/100)}
Tbl[["Sig.test"]]  <- significanceTest(Tbl[,Freq1],Tbl[,Freq2])

结果:

> Tbl
        Range1 Freq1  Pct1 Freq2  Pct2      Sig.test
 1: -4 to -3.5     0  0.00     0  0.00  1.000000e+00
 2: -3.5 to -3     1  0.04     4  0.13  9.139312e-01
 3: -3 to -2.5     0  0.00     3  0.10  9.139312e-01
 4: -2.5 to -2     7  0.25    11  0.35  8.521438e-01
 5: -2 to -1.5    18  0.64    19  0.61  9.900498e-01
 6: -1.5 to -1    43  1.54    46  1.47  9.139312e-01
 7: -1 to -0.5   149  5.33   139  4.44  3.678794e-01
 8:  -0.5 to 0  1375 49.18  1585 50.64 2.993184e-192
 9:   0 to 0.5   953 34.08  1074 34.31  2.599830e-64
10:   0.5 to 1   144  5.15   148  4.73  8.521438e-01
11:   1 to 1.5    70  2.50    59  1.88  2.981973e-01
12:   1.5 to 2    31  1.11    27  0.86  8.521438e-01
13:   2 to 2.5     3  0.11    11  0.35  5.272924e-01
14:   2.5 to 3     2  0.07     2  0.06  1.000000e+00
15:   3 to 3.5     0  0.00     2  0.06  9.607894e-01
> 

您可以更改功能&#34; significantTest&#34;如你所愿。