如何在 R 中找到一个变量属于哪个 interval/range

How to find which interval/range a variable falls under in R

我有一个数据框

> data.frame(Col1=seq(0,24,by=4),x=rnorm(7),y=rnorm(7,50))
  Col1            x        y
1    0 -0.107046196 49.96748
2    4 -0.001515573 50.02819
3    8 -1.884417429 49.80308
4   12  1.692774467 50.45827
5   16 -0.907602775 51.14937
6   20  0.166186536 49.17502
7   24  0.420263825 49.56720

和一个变量

t=2

并想找到其所属数据的子集(本例中为第1行和第2行),然后计算变量x和y中的比值,即

  Col1            x        y
1    0 -0.107046196 49.96748
2    4 -0.001515573 50.02819

然后根据值t得到(t-0)/(4-0),然后用这个比值计算x和y的位置

在matlab中找到一个基金函数(),想知道R中有没有类似的函数

具体来说,有没有办法确定变量属于哪个区间?一旦我找到那个区间,提取数据子集的方法?

目前只能想到%in%运算符,

> t %in% df$Col1
[1] FALSE

为了更清楚,我试过了

> z=NULL
> for(i in 1:(nrow(df)-1)){
+   z[[i]]=df$Col1[i]:df$Col1[i+1]
+ }
> w=NULL
> for(i in 1:length(z)){
+   w=c(w,t %in% z[[i]])
+ }
> v=which(w==1)
> df[v:(v+1),]
  Col1        x        y
1    0 1.076101 50.17514
2    4 1.971503 47.81647
> 

现在希望有一个更简洁的答案,因为我的真实数据超过 100 万行。

尝试使用下面的代码,看看它是否会给您预期的结果:

 dataframe=data.frame(Col1=seq(0,24,by=4),x=rnorm(7),y=rnorm(7,50))
 funfun=function(x){v=findInterval(x,dataframe$Col1);c(v,v+1)}
 dataframe[funfun(2),]
   Col1        x        y
 1    0 0.831266 50.28246
 2    4 1.751892 48.78810
dataframe[funfun(10),]
   Col1          x        y
 3    8  0.2624929 48.33945
 4   12 -0.2243066 51.11304

如果这对您有帮助,请告诉我们。谢谢