我试图def_59_z_#
根据已经过去的时间(自火灾以来的时间- )获得跨几列(气候缺水 - )的最大值 BY ROW YEAR.DIFF
。以下是条件:
def_59_z_1
).但是,当我包含条件时,我无法提取行式最大值。有几个现有的帖子解决了按行的最小值和最大值(示例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))))))
将此函数放入apply
家庭函数中
func <- function(x) {
first.val <- x[1]
if (first.val < 5) {
return(max(x[2:(first.val+)])
} else {
return(max(x[2:6]))
}
}
您所需的输出应通过以下方式获得:
apply(data, 1, function(x) func(x)) #do it by row by setting arg2 = 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句