Программа R для вычисления среднего значения результатов тех же экспериментов - PullRequest
0 голосов
/ 05 августа 2020

Я работаю в программе R, которая должна брать средние значения всех результатов одного и того же эксперимента. Например, есть два эксперимента, соответственно эксперимент 1 и эксперимент 2. Эксперимент 1 имеет три результата на строку, а эксперимент 2 имеет два результата на строку. Программа должна рассчитать средние результаты эксперимента 1 и средние результаты эксперимента 2.

cols<-c('experiment 1 result 1','experiment 1 result 2','experiment 1 result 3','experiment 2 result 1','experiment 2 result 2') 
df <- data.frame(matrix(ncol = 5, nrow = 1)) 
colnames(df)<-cols 
df[1,]<-c(1,3,2,2,4)

В случае данного примера на выходе должен быть следующий фрейм данных:

cols<-c('experiment 1','experiment 2') 
df <- data.frame(matrix(ncol = 2, nrow = 1)) 
colnames(df)<-cols 
df[1,]<-c(2,3)

В зависимости от ситуации количество экспериментов и количество результатов на эксперимент могут варьироваться. Поэтому я ищу общий c подход для решения этой проблемы. Есть ли кто-нибудь, кто мог бы мне помочь с этим?

Заранее благодарю

1 Ответ

1 голос
/ 05 августа 2020

Оставьте только "экспериментальный" номер из имен столбцов:

sub(' result \\d+', '', names(df))
#[1] "experiment 1" "experiment 1" "experiment 1" "experiment 2" "experiment 2"

Используйте это как группирующую переменную в tapply, чтобы получить:

tapply(unlist(df), sub(' result \\d+', '', names(df)), mean)
#experiment 1 experiment 2 
#           2            3 

Для более чем одной строки мы можем использовать split.default:

sapply(split.default(df, sub(' result \\d+', '', names(df))), rowMeans)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...