我有一个跨标签的频率表,其中的测量是CAG,列A01,A02等是频率计数。也就是说,13CAG的6485个计数,CAG 14的35个计数。我希望每一列中的值之和,条件是该行的CAG大于或等于模态CAG值。然后,我将除以A01之和。这提供了大于或等于模式的值的比例。我已经设法让它在一列上工作,但是我想在每一列上运行它,对每一列使用相关的模式。我很感谢你的帮助!
data <- data.frame(CAG = c(13, 14, 15, 17),
A01 = c(6485,35,132, 12),
A02 = c(0,42,56, 4))
mode <- data$CAG[data$A01 == max(data$A01)]
B <- lapply(data[, 2:ncol(data)], function(x) {
sum(x[data$CAG >= mode])
})
prop <- B / sum(data$A01)发布于 2017-06-25 18:59:13
您也需要将模式计算放在函数中。
sapply(data[, 2:ncol(data)], function(x) {
mode <- data$CAG[which.max(x)]
B <- sum(x[data$CAG >= mode])
B/sum(x)
})
## A01 A02
## 1.0000000 0.5882353 函数which.max与x==max(x)等效(至少在这种用法中是如此)。
https://stackoverflow.com/questions/44749314
复制相似问题