![](/img/trans.png)
[英]Calculate multiple aggregations on several variables using lapply(.SD, …)
[英]using lapply() with multiple variables
我有一個交叉表頻率表,其中的度量是CAG,列A01,A02等是頻率計數。 即6485計數為13 CAG,35計數為CAG14。我想對每一列的值求和,只要該行的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)
您還需要將模式計算放入功能中。
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)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.