[英]How to use for loop in R
我有一個CSV數據集(稱為data
),如下所示:
CLASS CoverageT1 CoverageT2 CoverageT3
Gamma 90 80 75
Gamma 89 72 79
Gamma 92 86 75
Alpha 50 80 67
Alpha 53 78 60
Alpha 58 81 75
我想檢索唯一的類並計算每個coverage列的平均值。
到目前為止,我已經完成了以下工作:
classes <- subset(data, select = c(CLASS))
unique_classes <- unique(classes)
for(x in unique_classes){
cove <- subset(data, CLASS == x , select=c(CoverageT1:CoverageT3))
average <- colMeans(cove)
print(cove)
}
結果,我得到以下結果:
CoverageT1 CoverageT2 CoverageT3
1 90 80 75
3 92 86 75
4 50 80 67
6 58 81 75
我想根據每個類檢索coverage值,然后計算平均值。 當我打印檢索到的coverage值時,我得到了一些行,而其他行卻丟失了!
有人可以幫我解決這個問題嗎
謝謝
您的代碼無法正常工作,因為,除其他外,您要分配每次迭代的平均值,而之前的迭代會丟失
有幾種方法可以做您想做的事情。 這是我的方法:
library(dplyr)
data %>% group_by(CLASS) %>% summarise_all(mean)
使用aggregate
另一種選擇
aggregate(data, . ~ CLASS , mean)
接受您的想法並將其包裝到by
。
xy <- read.table(text = "CLASS CoverageT1 CoverageT2 CoverageT3
Gamma 90 80 75
Gamma 89 72 79
Gamma 92 86 75
Alpha 50 80 67
Alpha 53 78 60
Alpha 58 81 75", header = TRUE)
out <- by(data = xy[, -1], INDICES = list(xy$CLASS), FUN = colMeans)
out <- do.call(rbind, out)
out
CoverageT1 CoverageT2 CoverageT3
Alpha 53.66667 79.66667 67.33333
Gamma 90.33333 79.33333 76.33333
這是我解決的方法:
coverage_all <- aggregate(coverage , list(class=data$CLASS), mean)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.