У меня есть ситуация, когда мой фрейм данных содержит результаты анализа изображения, где столбцы представляют собой долю определенного класса, присутствующего в изображении, так что примерный фрейм данных class_df
будет выглядеть следующим образом:
id A B C D E F
1 0.20 0.30 0.10 0.15 0.25 0.00
2 0.05 0.10 0.05 0.30 0.10 0.40
3 0.10 0.10 0.10 0.20 0.20 0.30
Каждый из этих классов принадлежит к функциональной группе, и я хочу создать новые столбцы, в которых пропорции каждой функциональной группы рассчитываются по классам.Пример отображения class_fg
class fg
A Z
B Z
C Z
D Y
E Y
F X
и желаемого результата будет (строка добавлена, чтобы показать желаемые новые столбцы):
id A B C D E F | X Y Z
1 0.20 0.30 0.10 0.15 0.25 0.00 | 0.00 0.40 0.60
2 0.05 0.10 0.05 0.30 0.10 0.40 | 0.40 0.40 0.20
3 0.10 0.10 0.10 0.20 0.20 0.30 | 0.30 0.40 0.30
И я могу сделать это одной функциональной группой ввремя, используя
first_fg <- class_fg %>%
filter(fg == "Z") %>%
select(class) %>%
unlist()
class_df <- class_df %>%
mutate(Z = rowSums(select(., one_of(first_fg))))
Конечно, есть лучший способ сделать это, где я могу вычислить сумму строк для каждой функциональной группы без необходимости просто повторять этот код для каждой группы?Может быть, используя purrr?