gpt4 book ai didi

r - R 中逻辑向量的最近索引

转载 作者:行者123 更新时间:2023-12-04 10:33:58 25 4
gpt4 key购买 nike

我试图根据另一列的条目从一列中获取最近的 TRUE 值的索引。我的示例数据框是这样的:

a <- c(FALSE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE)
b <- c(NA, NA, 3, NA, NA, NA, NA, 8, NA, NA, NA, 12, NA, NA, NA)
df <- data.frame(a, b)

我想创建一个新列,在来自 b 的给定值之前给出最接近的 TRUE 值的索引。 .为了说明,产生的 df应该是这样的:
       a  b  c
1 FALSE NA NA
2 TRUE NA NA
3 FALSE 3 2
4 FALSE NA NA
5 FALSE NA NA
6 TRUE NA NA
7 FALSE NA NA
8 FALSE 8 6
9 TRUE NA NA
10 TRUE NA NA
11 FALSE NA NA
12 FALSE 12 10
13 FALSE NA NA
14 FALSE NA NA
15 FALSE NA NA

我知道我可以使用 max(which(df$a == TRUE))但我不知道如何让它以只考虑前面值的索引的方式工作。谢谢!

最佳答案

我们可以得到所有TRUE的索引值,然后使用 findIntervalb 中的每个值获取最接近的值.

inds <- which(df$a)
df$c <- inds[findInterval(df$b, inds)]
df

# a b c
#1 FALSE NA NA
#2 TRUE NA NA
#3 FALSE 3 2
#4 FALSE NA NA
#5 FALSE NA NA
#6 TRUE NA NA
#7 FALSE NA NA
#8 FALSE 8 6
#9 TRUE NA NA
#10 TRUE NA NA
#11 FALSE NA NA
#12 FALSE 12 10
#13 FALSE NA NA
#14 FALSE NA NA
#15 FALSE NA NA

关于r - R 中逻辑向量的最近索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60277188/

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