Применить ограничения бина от одного фрейма данных к другому фрейму данных в R - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь создать ячейки с равным количеством наблюдений, используя начальный фрейм данных:

# 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 |

Затем я хочу использовать пределы бинов, определенные выше, для создания бинов для второго фрейма данных, но яне могу понять, как заставить бункеры иметь одинаковый размер:

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))

Моя конечная цель - создать регрессию в перекрестной валидации в k-кратном виде путем регрессии числа наблюдений из 'das2', попадающих вбункеры, созданные из 'das' - я пытаюсь оценить прогностическую силу функций выбора ресурсов, сгенерированных в соответствии с используемым / доступным дизайном из данных телеметрии GPS.

Спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Если вы хотите использовать интервалы от первого среза для объединения второго набора данных, вы можете вернуть их с помощью аргумента 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 |
...