R程序计算相同实验结果的平均值
R program to calculate the mean of the results of the same experiments
我正在使用 R 程序,它需要对同一实验的所有结果取平均值。比如有两个实验,分别是实验一和实验二,实验一每行三个结果,实验二每行两个结果。程序应计算实验 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)
根据具体情况,实验次数和每次实验的结果数可能会有所不同。因此,我正在寻找一种通用的方法来解决这个问题。有人可以帮我解决这个问题吗?
提前谢谢你。
仅保留列名称中的“实验”编号:
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
对于超过 1 行,我们可以使用 split.default
:
sapply(split.default(df, sub(' result \d+', '', names(df))), rowMeans)
我正在使用 R 程序,它需要对同一实验的所有结果取平均值。比如有两个实验,分别是实验一和实验二,实验一每行三个结果,实验二每行两个结果。程序应计算实验 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)
根据具体情况,实验次数和每次实验的结果数可能会有所不同。因此,我正在寻找一种通用的方法来解决这个问题。有人可以帮我解决这个问题吗?
提前谢谢你。
仅保留列名称中的“实验”编号:
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
对于超过 1 行,我们可以使用 split.default
:
sapply(split.default(df, sub(' result \d+', '', names(df))), rowMeans)