gpt4 book ai didi

r - 在 R 中,如何对数据框中每一行的不同数量的元素取平均值?

转载 作者:行者123 更新时间:2023-12-01 22:28:12 25 4
gpt4 key购买 nike

所以我有一个数据框 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 = " ")

对应另一个dataframe,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 的第二行取平均值,而是使用 数据[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)

关于r - 在 R 中,如何对数据框中每一行的不同数量的元素取平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com