将bin限制从一个数据帧应用于R中的另一个数据帧

时间:2018-06-12 22:38:01

标签: r cross-validation binning

我正在尝试使用初始数据框创建具有相同观察量的分档:

# create data frame
das <- data.frame(anim=1:15, count = 1,
              wt=c(181,179,180.5,201,201.5,245,246.4,
                   189.3,301,354,369,205,199,394,231.3))

## create 3 equal bins
das$bin <-cut2(das$wt, g=3)

## View number of values in each bin
das %>% 
   count(count, bin) %>% 
   kable(align ='c')

## verify that bins have equal number of observations
| count |    bin    | n |
|:-----:|:---------:|:-:|
|   1   | [179,201) | 5 |
|   1   | [201,246) | 5 |
|   1   | [246,394] | 5 |

然后我想使用上面定义的bin限制为第二个数据框创建bin,但是我无法弄清楚如何强制这些bin的大小相同:

das2 <- data.frame(anim=1:15, count = 1, wt=c(185,190,181,220,205,235,226,
                               189,304,303,179,205,199,394,231.3))

我的最终目标是通过回归'das2'中落入由'das'创建的区间中的观察数量来创建k折交叉验证中的回归 - 我试图评估资源选择函数的预测强度根据GPS遥测数据的使用/可用设计生成。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想使用第一个剪切的间隔来分隔第二个数据集,您可以使用参数onlycuts=TRUE返回它们并将它们反馈到第二次调用cut2

library(Hmisc)
library(tidyverse)
library(knitr)

das <- data.frame(anim=1:15, count = 1,
                  wt=c(181,179,180.5,201,201.5,245,246.4,
                       189.3,301,354,369,205,199,394,231.3))

das2 <- data.frame(anim=1:15, count = 1, wt=c(185,190,181,220,205,235,226,
                                              189,304,303,179,205,199,394,231.3))

breaks <-cut2(das$wt, g=3, onlycuts = TRUE)

das2$bin<-cut2(das2$wt, cuts = breaks)

das2 %>% 
  count(count, bin) %>% 
  kable(align ='c')

| count |    bin    | n |
|:-----:|:---------:|:-:|
|   1   | [179,201) | 6 |
|   1   | [201,246) | 6 |
|   1   | [246,394] | 3 |