У меня есть фрейм данных (df, образец которого показан ниже).Я хочу выбрать значения из столбцов a1, b1 и c1 и взять среднее значение, если значения в a2, b2 и c2 положительные.Например, в первой строке df все значения в a2, b2 и c2 являются положительными, я затем выбираю соответствующие значения в a1, b1 и c1 и усредняю их.Результат - 0,4933.Во втором столбце только значение в c2 является положительным, тогда я выберу значение в c1 (0,01).
a1 b1 c1 a2 b2 c2 desired outcome
0.51 0.49 0.48 0.05 0.03 0.09 0.493333
0.33 0.31 0.3 -0.03 -0.05 0.01 0.01
0.22 0.2 0.19 0.04 0.02 0.08 0.203333
0.54 0.52 0.51 -0.05 0.08 -0.01 0.08
0.45 0.43 0.42 -0.03 -0.05 0.01 0.01
Ниже приведен мой код, в котором я перечислил все сценарии.Я ищу более эффективные коды, которые могут обрабатывать больше столбцов.
df2 <- df1 %>% select(c(a2,b2,c2)) %>%
mutate(outcome = ifelse(a2 >0 & b2>0 & c2>0, mean(a1,b1,c1),
ifelse(a2>0 & b2>0 &c2<0, mean(a1,b1),
ifelse(a2>0&b2<0&c2<0, mean(a1),
ifelse(a2<0&b2>0&c2>0, mean(b2,c2),
ifelse(a2<0&b2<0&c2>0, mean(c2),
mean(b2)))))))