Вместо выполнения left_join
можно создавать столбцы с mutate
и избегать шага summarise
library(dplyr)
df2 %>%
group_by(ind) %>%
mutate(mn = min(value), mx = max(value)) %>%
ungroup %>%
mutate(value2 = (value - mn)/(mx-mn))
ПРИМЕЧАНИЕ. Здесь мы предположили, что OP хотел получить столбцы mx,'Mn' в окончательном выводе. Но, если целью является получение только 'value2', нет необходимости создавать дополнительные столбцы, как @Gregor упоминается в комментариях
df2 %>%
group_by(ind) %>%
mutate(value2 = (value - min(value))/(max(value) - min(value)))
Кроме того, с tidyr_1.0.0
вместоgather
, можно использовать pivot_longer
, который является более обобщенным, поскольку он может иметь дело с несколькими наборами столбцов для изменения формы от 'wide' к 'long'
library(tidyr)
df %>%
pivot_longer(cols = -ind) %>%
group_by(ind) %>%
mutate(mn = min(value), mx = max(value)) %>%
ungroup %>%
mutate(value2 = (value - mn)/(mx-mn))