我试图在几列(气候缺水 - )中通过 ROW 获得最大值,def_59_z_#
具体取决于已经过去了多少时间(火灾后的时间 - YEAR.DIFF
)。以下是条件:
- 如果 1 年过去了,请选择第一年的赤字值。(
def_59_z_1
)。 - 如果是 2 年:前 2 年的最大赤字。
- 如果是 3 年:前 3 年的最大赤字。
- 如果是 4 年:前 4 年的最大赤字。
- 如果 5年或以上:最多前 5 年。
但是,当我包含条件时,我无法提取逐行最大值。有几个现有的帖子解决了按行的 min 和 max(示例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))))))