所以我有一个数据框,PVALUES,像这样:
PVALS <- read.csv(textConnection("PVAL1 PVAL2 PVAL3
0.1 0.04 0.02
0.9 0.001 0.98
0.03 0.02 0.01"),sep = " ")
对应于另一个数据框DATA,如下所示:
DATA <- read.csv(textConnection("COL1 COL2 CO3
10 2 9
11 20 200
2 3 5"),sep=" ")
对于中的每一行DATA
,我想取其索引对应于条目中的数字均值PVALUES
<= 0.05。
因此,例如,第一行中PVALUES
只有两个条目<= 0.05,即[1,2]和[1,3]中的条目。因此,对于的第一行DATA
,我想取2和9的均值。
在的第二行中PVALUES
,仅条目[2,2] <= 0.05,因此我将使用而不是DATA的第二行的均值DATA[20,20]
。
因此,我的输出如下所示:
MEANS
6.5
20
3.33
我认为我可能能够为PVALUES <= 0.05中的每个条目生成索引,然后使用它来选择DATA中的条目以用作均值。我试图使用此命令来生成索引:
exp <- which(PVALUES[,]<=0.05, arr.ind=TRUE)
...但是它只选择第一列小于等于0.05的索引。在上面的示例中,它只会输出[3,1]。
谁能看到我在做什么错,或者对如何解决这个问题有想法?
谢谢!
看起来有点有趣,但这应该可行
rowMeans(`is.na<-`(DATA,PVALUES>=.05), na.rm=T)
“丑陋”部分is.na<-
没有进行自动替换就被调用,但是这里我们只是将所有p值大于.05的数据设置为丢失,然后采用行均值。
我不清楚您正在做什么exp
,但是这种方法也可以工作。也许与
expx <- which(PVALUES[,]<=0.05, arr.ind=TRUE)
aggregate(val~row, cbind(expx,val=DATA[exp]), mean)
(重命名以免干扰内置exp()
功能)
经过测试
PVALUES<-read.table(text="PVAL1 PVAL2 PVAL3
0.1 0.04 0.02
0.9 0.001 0.98
0.03 0.02 0.01", header=T)
DATA<-read.table(text="COL1 COL2 CO3
10 2 9
11 20 200
2 3 5", header=T)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句