R从异常值中找到相对最大值
R finding relative maximum from outliers
假设我有一个数字向量,我想为其找到一个通用截止值。例如:
x <- c(35, 2, 3, 30, 1, 4, 33, 6, 36)
在这种情况下,我只想提取一个包含 35, 30, 33, 36
的子集。在这种情况下,截止值将在 30
没有硬编码明确的截止值,我希望我的代码适应不同的数字向量,以便找到该截止值。
另一个例子是:
x <- c(1, 20, 42, 13, 118, 149, 130, 30, 11, 32, 120, 0.5, 0.03)
在这种情况下,合理的截止值是 118
左右。
目前我正在对截止值进行硬编码,因为我处理的是简单的案例,但是我想让这个过程更加模块化以用于更多可变向量。
您可以使用 quantile
函数
cutoff <- function(y, prob=0.7) y[y > quantile(y, prob)]
x <- c(35, 2, 3, 30, 1, 4, 33, 6, 36)
cutoff(x)
[1] 35 33 36
x <- c(1, 20, 42, 13, 118, 149, 130, 30, 11, 32, 120, 0.5, 0.03)
cutoff(x)
[1] 118 149 130 120
您可以根据需要定义不同的概率
cutoff(x, 0.8)
[1] 149 130 120
假设我有一个数字向量,我想为其找到一个通用截止值。例如:
x <- c(35, 2, 3, 30, 1, 4, 33, 6, 36)
在这种情况下,我只想提取一个包含 35, 30, 33, 36
的子集。在这种情况下,截止值将在 30
没有硬编码明确的截止值,我希望我的代码适应不同的数字向量,以便找到该截止值。
另一个例子是:
x <- c(1, 20, 42, 13, 118, 149, 130, 30, 11, 32, 120, 0.5, 0.03)
在这种情况下,合理的截止值是 118
左右。
目前我正在对截止值进行硬编码,因为我处理的是简单的案例,但是我想让这个过程更加模块化以用于更多可变向量。
您可以使用 quantile
函数
cutoff <- function(y, prob=0.7) y[y > quantile(y, prob)]
x <- c(35, 2, 3, 30, 1, 4, 33, 6, 36)
cutoff(x)
[1] 35 33 36
x <- c(1, 20, 42, 13, 118, 149, 130, 30, 11, 32, 120, 0.5, 0.03)
cutoff(x)
[1] 118 149 130 120
您可以根据需要定义不同的概率
cutoff(x, 0.8)
[1] 149 130 120