【问题标题】:Creating a new variable that contains conditional rowsums in R在 R 中创建一个包含条件行和的新变量
【发布时间】:2019-12-03 16:01:23
【问题描述】:

我有一个包含 12 个变量的数据框:

id_group1, id_group2, ..., id_group11 : 11 个带数值的变量

mean_id:上述所有id_group变量的平均值

我现在需要的是一个新变量,它只包含值大于 mean_id 的 id_group 变量的行和。

我是 R 新手,仍在为看似简单的操作而苦苦挣扎 - 到目前为止,我已经尝试过使用 ifelse 结构,但它似乎从来没有工作过。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: r conditional-statements rowsum


    【解决方案1】:

    这是apply 的一个选项。循环遍历行(假设最后一列是 'mean_id',将大于第 12 列的其他元素作为子集,得到sum

    apply(df1, 1, function(x) sum(x[-12][x[-12] > x[12]], na.rm = TRUE))
    #[1] 42 40 52 39 50 51 49 49 24 27
    

    或者用rowSums,我们replace除第12列之外的元素,其中你的值小于或等于mean列,得到rowSums

    rowSums(replace(df1[-12], df1[-12] <= df1[,12], NA), na.rm = TRUE)
    #[1] 42 40 52 39 50 51 49 49 24 27
    

    数据

    set.seed(24)
    df1 <- as.data.frame(matrix(sample(1:8, 11 * 10, replace = TRUE), 
         ncol = 11, dimnames = list(NULL, paste0("id_group", 1:11))))
    df1$mean_id <- sample(1:6, 10, replace = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 2022-08-13
      • 2011-01-04
      • 2022-07-15
      • 2014-11-03
      • 2023-01-18
      • 1970-01-01
      相关资源
      最近更新 更多