簡體   English   中英

使用帶有多個變量的lapply()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM