最大值或最小值取决于另一个变量

时间:2017-08-16 12:27:39

标签: r variables max min

我需要根据波高的方向计算波高的最大值和最小值,也就是说,我有两个变量:

  • Hs(波高)
  • 方向(膨胀方向)

我需要知道方向在11.25和33.75度之间的波浪的最大波高。

目前,请使用以下功能:

Max (Hs [Direction [11.25: 33.75]))

但我不同意我的数据结果。

2 个答案:

答案 0 :(得分:3)

假设您的数据框名为df,您的变量名为HsDirection,您可以使用

max(df$Hs[df$Direction >= 11.25 & df$Direction <= 33.75])

获取Hs定义值范围内所有Direction值的最大值。

如果你像我一样,不喜欢分别定义区间的下限和上限的必要性,你可以使用这个整洁的函数(我发现here):

in_interval <- function(x, interval){
   stopifnot(length(interval) == 2L)
   interval[1] < x & x < interval[2]
}

然后使用

max(df$Hs[in_interval(df$Direction, c(11.25, 33.75))])

答案 1 :(得分:1)

@LAP的答案绝对正确,但您也可以使用dplyr包来同时获取maxmin

首先,让我们创建一些示例数据。

df <- data.frame(Hs = rnorm(327), Direction = runif(327, 0, 364))

现在让我们计算。

library(dplyr)

df %>%
  filter(Direction >= 11.25 & Direction <= 33.75) %>% 
  summarise(max(Hs), min(Hs))