2017-08-16 27 views
-1

我需要根据所来自的方向,以计算波高度的最大值和最小值,也就是说,我有两个变量:MAX或MIN取决于另一个变量

  • HS(波高度)
  • 方向(涌浪的方向)

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

现在,使用功能:

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

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

+4

欢迎来到SO!请给[mcve]! https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – jogo

+0

看看'dput()'! – Christoph

回答

3

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

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

Direction定义的数值范围内得到最大的所有Hs值。

如果你和我一样,不喜欢的必要性,分别定义间隔的两个上限和下限,你可以使用这个整齐的功能(我发现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

@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))