Пример данных:
Group <- c("a", "a", "a", "b", "b", "b", "c", "c", "c")
value_1 <- c(1.10, 2.5, 1.7, 0.99, 1.50, 1.65, 2.5, 2.5, 1.5)
value_2 <- c(0.03, 1.3, 3.5, 0.02, 4.3, 1.2, 1.4, 1.4, 3.7)
new_variable_1 <- c(1,0,1, 1,1,0, 0,0,1)
df <- data.frame(Group, value_1, value_2, new_variable_1)
Выход new_variable_1
.Я хочу создать new_variable_1
на основе следующих критериев; Я ищу 2 решения.
Основная идея:
поиск максимального значения в value_2
по группам и создание фиктивной переменной на основе значений в value_1
.
решение 1 Логика:
Найти max(value_2)
по группам.Например, максимальное значение в value_2
для группы a
равно 3.5
Найти соответствующий value_1
по группе.Например, value_1
равно 1.7
в группе a
создать new_variable_1
по группе, равной 1
, если value_1
меньше соответствующего значения в приведенном вышешаг.Например, для группы a
, value_1 <= 1.7
должно показывать 1
и value_1 > 1.7
должно показывать 0
.
решение 2 Логика:
То же, что и выше, но увеличить пороговое значение с шага 2 на 10%.
максимальное значение в value_2
для группы a
равно 3.5
, а затем соответствует значению 1.7
value_1
в группе a
Увеличить значение на 10%
.Для группы a 10%
увеличение составит 1.87
.
Создать new_variable_1
: для группы a value_1 <= 1.87
должно показать 1
& value_1 > 1.87
должно показать 0
.
R, dplyr
, data.table
и наиболее эффективные коды R приветствуются.
Это большой набор данных, поэтому группы могут иметь разную длину и Inf
или NA
могут существовать в value_2
.