我无法在堆栈交换中找到解决方案。
我有以下示例矩阵(仅显示前8个值),显示20个公平硬币翻转的总和(head = 1,tails = 0)。
print(Flips)
[,1]
[1,] 16
[2,] 11
[3,] 8
[4,] 9
[5,] 9
[6,] 7
[7,] 10
[8,] 14
我有所有可能的成功翻转(头部)的p值,0到20保存在一个单独的对象中,pvalues(使用二项分布计算)
read.table("p_values.txt", header=T)
ID Heads p_value
1 1 0 0.0000010
2 2 1 0.0000191
3 3 2 0.0001812
4 4 3 0.0010872
5 5 4 0.0046206
6 6 5 0.0147858
7 7 6 0.0369644
8 8 7 0.0739288
9 9 8 0.1201344
10 10 9 0.1601791
11 11 10 0.1761971
12 12 11 0.1601791
13 13 12 0.1201344
14 14 13 0.0739288
15 15 14 0.0369644
16 16 15 0.0147858
17 17 16 0.0046206
18 18 17 0.0010872
19 19 18 0.0001812
20 20 19 0.0000191
21 21 20 0.0000010
我想要做的是为矩阵“Flips”分配一个新列,它根据我在p值文件中的数据为每一行分配一个p值。
因此,例如,新矩阵的p值为0.00462055,分配给行[,1]。我是R编程的新手,我知道如何使用cbind分配一个新列,但我不知道如何让R为其相应的成功次数/ 20分配一个p值... < / p>
答案 0 :(得分:1)
如果未订购数据,您可以使用match
cbind(Flips, df1[,3][match(Flips[,1], df1$Heads)])