У меня есть данные, показывающие процент людей в некоторых группах, имеющих разные уровни образования:
df <- data_frame(group = c("A", "B"),
no.highschool = c(20, 10),
high.school = c(70,40),
college = c(10, 40),
graduate = c(0,10))
df
# A tibble: 2 x 5
group no.highschool high.school college graduate
<chr> <dbl> <dbl> <dbl> <dbl>
1 A 20. 70. 10. 0.
2 B 10. 40. 40. 10.
Например, в группе А 70% людей имеют высшее образование.
Я хочу сгенерировать 4 переменные, которые дают мне долю людей в каждой группе с менее чем каждым из 4 уровней образования (например, lessthan_no.highschool, lessthan_high.school и т. Д.).
желаемый df будет:
desired.df <- data.frame(group = c("A", "B"),
no.highschool = c(20, 10),
high.school = c(70,40),
college = c(10, 40),
graduate = c(0,10),
lessthan_no.highschool = c(0,0),
lessthan_high.school = c(20, 10),
lessthan_college = c(90, 50),
lessthan_graduate = c(100, 90))
По моим фактическим данным, у меня много групп и гораздо больше уровней образования. Конечно, я мог бы делать это по одной переменной за раз, но как я мог сделать это программно (и элегантно), используя tidyverse
инструменты?
Я бы начал с того, что сделал что-то вроде mutate_at()
внутри map()
, но меня смутило то, что список суммируемых переменных различен для каждой из новых переменных. Вы можете передать список новых переменных и их соответствующих переменных для суммирования в виде двух списков в pmap()
, но не ясно, как сгенерировать этот второй список кратко. Хотите знать, если есть какое-то решение для вложения ...