在 R 中创建一个包含条件行和的新变量

Creating a new variable that contains conditional rowsums in R

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

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

mean_id:对上面提到的所有id_group变量表示平均

我现在需要的是一个新变量,它仅包含 id_group 个值大于 mean_id.

的变量的行和

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

有人知道如何处理吗?

这是 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)