Как извлечь произвольное количество строк (случайным образом), сопоставив три условия в R - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть простые проблемы здесь. У меня есть два кадра данных, как показано ниже. Первая - это таблица характеристик, которая описывает каждую категорию с определенным количеством единиц. У меня есть 7 факторов в возрасте, 2 фактора в сексе и 17 факторов в год. Таким образом, общая комбинация составляет 7 x 2 x 17 = 238. В столбце Count указано, что определенное количество людей принадлежит к каждой категории.

Table 1 (Characteristics Table)

Age   Sex   Year   Count
20    F     2010   30
30    M     2011   20
30    F     2011   50
40    F     2011   30
40    F     2012   20
50    M     2014   40
60    F     2015   40
70    M     2016   50
80    M     2017   10
.     .     .      .
.     .     .      .
continues (total row 238)

И следующая таблица 2 - это таблица идентификаторов людей, которая выглядит следующим образом.

Table 2 (All data)

ID    Age    Sex    Year
1     20     F      2010
2     20     F      2011
3     20     F      2012
4     40     F      2011
5     40     F      2011
6     40     F      2011
7     60     F      2015
8     60     F      2015
9     60     F      2015
10    60     F      2015
11    60     F      2015
12    60     F      2015
13    70     F      2015
.     .      .      .
.     .      .      .
continues (total row 30,000)

Я хочу случайным образом выбрать число Количество (из таблицы1) что соответствует возрасту, полу и году из таблицы2.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 05 апреля 2020

Мы можем left_join table2 с table1 на основе Age, Sex и Year. Выберите Count строк в каждой комбинации Age, Sex и Year. Используйте replace = TRUE, если значение Count выше, чем количество строк.

library(dplyr)

table2 %>%
  left_join(table1, by = c('Age', 'Sex', 'Year')) %>%
  group_by(Age, Sex, Year) %>%
  sample_n(first(Count))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...