Я пытаюсь получить максимальное значение BY ROW для нескольких столбцов (климатический дефицит воды - def_59_z_#
) в зависимости от того, сколько времени прошло (время с момента пожара - YEAR.DIFF
).Вот условия:
- Если прошел 1 год, выберите значение дефицита для первого года.(
def_59_z_1
). - Если 2 года: максимальный дефицит первых 2 лет.
- Если 3 года: максимальный дефицит первых 3 лет.
- Если 4 года: максимум дефицита в первые 4 года.
- Если 5 или более лет: максимум в первые 5 лет.
Однако я не могу извлечьпострочно макс, когда я включаю условие.Существует несколько существующих постов, в которых рассматриваются построчно мин и макс (примеры 1 и 2 ) и sd (пример 3 ) - но это не такУсловия использования.Я попытался использовать apply
, но мне не удалось найти решение, когда у меня есть несколько столбцов, а также условное требование.
Следующий код просто возвращает 3,5 в новом столбце def59_z_max15
, что является максимальным значением, которое встречается в кадре данных - , за исключением , когда YEAR.DIFF
равно 1, в этом случае def_50_z_1
возвращается напрямую.Но для всех остальных условий мне нужны 0,98, 0,67, 0,7, 1,55, 1,28 - значения, которые отражают максимум строки указанных столбцов.Ссылка на пример данных здесь .Как мне этого добиться?
Я ценю любые / все предложения!
data <- data %>%
mutate(def59_z_max15 = ifelse(YEAR.DIFF == 1,
(def59_z_1),
ifelse(YEAR.DIFF == 2,
max(def59_z_1, def59_z_2),
ifelse(YEAR.DIFF == 3,
max(def59_z_1, def59_z_2, def59_z_3),
ifelse(YEAR.DIFF == 4,
max(def59_z_1, def59_z_2, def59_z_3, def59_z_4),
max(def59_z_1, def59_z_2, def59_z_3, def59_z_4, def59_z_5))))))