【发布时间】:2019-10-02 02:20:09
【问题描述】:
我正在尝试通过几列(气候缺水-def_59_z_#)获得最大值,具体取决于已经过去了多少时间(火灾后的时间-YEAR.DIFF)。以下是条件:
- 如果已过 1 年,请选择第一年的赤字值。
(
def_59_z_1)。 - 如果 2 年:前 2 年的最大赤字。
- 如果 3 年:前 3 年的最大赤字。
- 如果 4 年:前 4 年的最大赤字。
- 如果 5 或更多年:前 5 年最多。
但是,当我包含条件时,我无法提取逐行最大值。有几个现有的帖子解决了按行的最小值和最大值(例如1 和2)和sd(例如3)——但这些不使用条件。我尝试过使用apply,但是当我涉及多个列以及条件要求时,我无法找到解决方案。
以下代码只是在新列def59_z_max15 中返回 3.5,这是数据帧中出现的最大值 -- except 当YEAR.DIFF 为 1 时,在这种情况下 def_50_z_1是直接返回的。但对于所有其他条件,我想要 0.98、0.67、0.7、1.55、1.28 - 反映指定列的行最大值的值。链接到样本数据here。我怎样才能做到这一点?
感谢任何/所有建议!
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))))))
【问题讨论】:
标签: r if-statement max dplyr rowwise