簡體   English   中英

R 中列的條件總和

[英]conditional sum of columns in R

我需要一個快速提示,如何計算大於或等於某個閾值(在列鍵中定義)的所有列(此處命名為 A、B、C)的總和。

df <- data.frame(
  key = c(0.5, 0.8, 0.2),
  A = c(0.7, 0.6, NA),
  B = c(0.7, 0.8, 0.9),
  C = c(0.1, NA, NA)
)

該解決方案可以使用 if 語句來實現,但我正在尋找一些更有效的方法。

df$solution <- NA
for (i in 1:nrow(df)){
  threshold <- df[i, "key"]
  values <- df[i, c(2:ncol(df))]
  a <- sum(values[values >= threshold], na.rm = TRUE)
  df[i, "solution"] <- a
}

> df
  key   A   B   C solution
1 0.5 0.7 0.7 0.1      1.4
2 0.8 0.6 0.8  NA      0.8
3 0.2  NA 0.9  NA      0.9

我在此處此處此處找到了一些示例,其中閾值是預定義的值,但無法使其適用於我的情況。

df$solution <- rowSums(df[-1] * (df[,-1]>=df[,1]), na.rm = TRUE)
df
  key   A   B   C solution
1 0.5 0.7 0.7 0.1      1.4
2 0.8 0.6 0.8  NA      0.8
3 0.2  NA 0.9  NA      0.9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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