gpt4 book ai didi

r - 获取一个变量的最小值大于另一个变量的观测值

转载 作者:行者123 更新时间:2023-12-01 10:19:56 25 4
gpt4 key购买 nike

我有两个不同的数据集(或向量)。假设我有这个变量和几个观察结果:

a<- c(1:30)

然后在另一个数据集中,我有另一个(小得多的变量),假设只有 5 个观察值。

ref <- c(5:10)

我想创建一个变量,其中包含大于(或等于)a 的 ref 的最小值,对于每个 a,否则产生 0。我试过了,但显然不起作用。

min <- ifelse(a>=ref, min(ref[a>=ref]), 0)

结果变量的长度应与 a 相同,当 a 介于 1 和 4 之间时为 0,当 a 为 5 时为 5,当其为 6 时为 6... 对于所有 10 或以上的值均为 10。

感谢您的帮助!

最佳答案

对于 a 的每个值,我们找到 ref 的最接近值,如果它存在则大于或等于 a 否则返回 0。

sapply(a, function(x) ifelse(any(x >= ref), max(ref[which(x >= ref)]), 0))
#[1] 0 0 0 0 5 6 7 8 9 10 10 10 10 10 10 10 10 10 10.......

正如@Sotos 所建议的那样,我们可以使用嵌套的replaceifelse 来完成相同的操作而无需循环

#Option 1
replace(replace(a, a < min(ref), 0), a > max(ref), max(ref))

#Option 2
ifelse(a < min(ref), 0, ifelse(a > max(ref), max(ref), a))

关于r - 获取一个变量的最小值大于另一个变量的观测值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53706205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com