首页 > 解决方案 > 如果在两个变量之间,跨R中的数据框分配一个值

问题描述

我有两个数据帧,一个具有一系列长度> n的随机值,称之为:

df.my_data

我还有第二个数据框,称之为:

df.regions

df.regions由三列组成,第一列有一组从 1 到 n 的变量,第二列有一个明确的下限,第三列有一个明确的上限。调用这些

regions$location
regions$lower
regions$upper

我想将 , 的第一列中的数字分配df.regionsregions$location一个新列,df.my_data具体取决于数字是否df.my_data落在给定的下限和上限之间df.regions

如果我能以任何方式澄清,请告诉我。

标签: rdataframemapping

解决方案


如果我理解正确(并假设区域下限和上限用尽了您需要分类的值范围并且是独占的),那么这应该是一个类似的例子

library(dplyr)
library(purrr)

set.seed(1)
x = tibble(value=abs(rnorm(10, 0, 5)))
bounds = tibble(lower = c(0:6), upper = c(1:6, Inf), class = letters[1:7])

x$class <- bounds[map_int(x$value, function(z) {which(map_lgl(seq_len(nrow(bounds)), ~between(z, bounds$lower[.x], bounds$upper[.x])  ))}),3]
x
#> # A tibble: 10 x 2
#>    value class$class
#>    <dbl> <chr>      
#>  1 3.13  d          
#>  2 0.918 a          
#>  3 4.18  e          
#>  4 7.98  g          
#>  5 1.65  b          
#>  6 4.10  e          
#>  7 2.44  c          
#>  8 3.69  d          
#>  9 2.88  c          
#> 10 1.53  b

由 reprex 包(v0.3.0)于 2019 年 11 月 24 日创建


推荐阅读