Я не уверен, что полностью понимаю, что вы имеете в виду под следующим:
Я хотел бы добавить значение 0,789 столбцаcent_pos ко всем автомобилям с am = 0 через новый столбец в фрейме данных mtcars с меткой процент_позитивом
Проблема в том, что вы вычислили несколько различных percent_pos
значений для am == 0
(фактически для каждого значения am
). Поэтому кажется несколько произвольным подчеркнуть только первое значение. Может быть, это именно то, что вы ищете, но это не ясно из предоставленной информации. Если, с другой стороны, ваш вопрос на самом деле:
Как мне сопоставить вычисленное значение percent_pos
, соответствующее каждой уникальной комбинации am
и gear
, с исходными данными?
Тогда следующая простая операция left_join
приведет вас туда:
mtcars %>%
left_join(
mtcars %>%
group_by(am, gear) %>%
summarise (n = n()) %>%
mutate(percent_pos = n / sum(n)),
by = c('am', 'gear')
)
Первые / последние 4 строки результирующего тибля выглядят следующим образом:
mpg cyl disp hp drat wt qsec vs am gear carb n percent_pos
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 8 0.6153846
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 8 0.6153846
3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 8 0.6153846
4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 15 0.7894737
29 15.8 8 351 264 4.22 3.170 14.50 0 1 5 4 5 0.3846154
30 19.7 6 145 175 3.62 2.770 15.50 0 1 5 6 5 0.3846154
31 15.0 8 301 335 3.54 3.570 14.60 0 1 5 8 5 0.3846154
31 21.4 4 121 109 4.11 2.780 18.60 1 1 4 2 8 0.6153846
Этот подход должен иметь возможность масштабирования до произвольного числа группирующих переменных.