Создание новой переменной, содержащей условные суммы строк в R

У меня есть фрейм данных с 12 переменными:

id_group1, id_group2, ..., id_group11: 11 переменных с числовым значением.

mean_id: среднее значение по всем вышеупомянутым переменным id_group.

Теперь мне понадобится новая переменная, которая содержит сумму строк только для переменных id_group, значение которых БОЛЬШЕ, ЧЕМ mean_id.

Я новичок в R и все еще борюсь с, казалось бы, простыми операциями - до сих пор я пробовал использовать конструкции ifelse, но это никогда не работало.

Есть ли у кого-нибудь идеи, как это сделать?


person Sarah1989    schedule 03.12.2019    source источник


Ответы (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)
person akrun    schedule 03.12.2019