Так у меня есть dataframe, PVALUES, как это:В R, как принять среднее значение для различных строк для каждой строки в кадре данных?
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 я бы просто использовал 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].
Может ли кто-нибудь увидеть, что я делаю неправильно, или идеи о том, как решить эту проблему?
Спасибо!
Вы уверены, что у вас есть выходные данные? Среднее значение 2 и 9 равно 5.5. Для последней строки, вы хотите, чтобы среднее значение 2,3 и 5 (т.е. 3,3)? – MrFlick
Упс - вы правы, я его изменю –