Пример моих наборов данных
dft=structure(list(create = structure(1L, .Label = "10.10.2018 0:00", class = "factor"),
id = 24799522L, order_id = 6934259L, product = structure(1L, .Label = "Intoxic", class = "factor"),
lead_country = structure(1L, .Label = "Indonesia", class = "factor"),
webmaster_identifier = 430L), .Names = c("create", "id",
"order_id", "product", "lead_country", "webmaster_identifier"
), class = "data.frame", row.names = c(NA, -1L))
-
dft2=structure(list(operator_login = structure(c(1L, 1L, 1L, 1L, 2L,
2L, 2L), .Label = c("rusnak.e@2wtrade.com", "werty"), class = "factor"),
product = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "intoxic", class = "factor"),
lead_country = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "Indonesia", class = "factor"),
webmaster_identifier = c(430L, 430L, 430L, 430L, 430L, 430L,
430L), intervals = structure(c(4L, 2L, 1L, 3L, 2L, 1L, 3L
), .Label = c("(1,2]", "(10,16.1]", "(5,6]", "(9,10]"), class = "factor"),
n_calls = c(4L, 1L, 1L, 2L, 1L, 1L, 2L), n_approves = c(4L,
1L, 1L, 2L, 1L, 1L, 2L), prob_approve = c(1L, 1L, 1L, 1L,
1L, 1L, 1L), prob_ci_lo = c(0.397635364383525, 0.025, 0.025,
0.158113883008419, 0.9, 0.4, 0.27), prob_ci_up = c(1, 0.8,
0.65, 0.76, 1, 0.7, 0.4), prob_approve_rand = c(0.510206477095914,
0.193745510355802, 0.584877369028982, 0.703930565970481,
0.95, 0.65, 0.33)), .Names = c("operator_login", "product",
"lead_country", "webmaster_identifier", "intervals", "n_calls",
"n_approves", "prob_approve", "prob_ci_lo", "prob_ci_up", "prob_approve_rand"
), class = "data.frame", row.names = c(NA, -7L))
Я должен объединить эти два набора данных по продукту, lead_country, webmaster_identifier.
Но кроме этого, когдаВступая, мне нужно соблюдать сложное состояние.prob_ci_lo и prob_ci_up это CI для каждой строки (группы: operator_login, product, lead_country, webmaster_identifier, интервалы.)
При объединении значения в prob_approve_rand
будут взяты из доверительного интервала для каждой случайной группы,но так, чтобы условие вставки соблюдалось.
Пример
Например, скажем, rusnak.e@2wtrade.com+intoxic + Индонезия + 430 + интервал (9,10) его CI от 0,397 до 1, случайно поместите значение в prob_approve_rand из этого диапазона CI, например, 0,58.
Также для других интервалов для конкретной страны, продукта, веб-мастер: rusnak.e@2wtrade.com+intoxic + indonesia + 430 + interval (10,16.1] его CI от 0,025 до 0,8
этот CI также включает 0,39, но верхняя граница CI для группы с интервалом (9.10) больше, чем верхняя (1) граница CIпоэтому для интервала (10,16,1] (0,8)
установите случайное значение prob_approve_rand
ниже 0,39, например 0,19.
, наиболее важное и трудное дляСуть в том, что значения от CI до prob_approve_rand
не должны перекрываться или делали это в очень редких случаях, и случайное значение не должно превышать 0,75 исключения, если нижний предел CI> 0,75
Аналогично с другими группами
Как достичь такого результата?
operator_login product lead_country webmaster_identifier intervals n_calls
1 rusnak.e@2wtrade.com intoxic Indonesia 430 (9,10] 4
2 rusnak.e@2wtrade.com intoxic Indonesia 430 (10,16.1] 1
3 rusnak.e@2wtrade.com intoxic Indonesia 430 (1,2] 1
4 rusnak.e@2wtrade.com intoxic Indonesia 430 (5,6] 2
5 werty intoxic Indonesia 430 (10,16.1] 1
6 werty intoxic Indonesia 430 (1,2] 1
7 werty intoxic Indonesia 430 (5,6] 2
n_approves prob_approve prob_ci_lo prob_ci_up prob_approve_rand
1 4 1 0.3976354 1.00 0.5102065
2 1 1 0.0250000 0.80 0.1937455
3 1 1 0.0250000 0.65 0.5848774
4 2 1 0.1581139 0.76 0.7039306
5 1 1 0.9000000 1.00 0.9500000
6 1 1 0.4000000 0.70 0.6500000
7 2 1 0.2700000 0.40 0.3300000