【问题标题】:conditional sum of columns in RR中列的条件总和
【发布时间】:2021-03-24 02:06:02
【问题描述】:

我需要一个快速提示,如何计算大于或等于某个阈值(在列键中定义)的所有列(此处命名为 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

我发现了一些示例 hereherehere,其中阈值是预定义的值,但不适用于我的情况。

【问题讨论】:

    标签: r dplyr sum conditional-statements


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      相关资源
      最近更新 更多