У меня есть данные, которые выглядят так:
df <- data.frame (
cancer = c(1, 0, 0, 0, 0, 1, 0, 0, 0, 0),
CVD = c(0, 1, 1, 0, 1, 0, 0, 0, 0, 0),
diab = c(0, 0, 0, 1, 0, 1, 0, 0, 1, 0),
stroke = c(0, 1, 1, 0, 1, 0, 0, 0, 1, 0),
asthma = c(0, 0, 0, 0, 1, 1, 0, 0, 0, 0),
LTC_count = c(1, 2, 2, 1, 4, 3, 0, 0, 2, 0))
Мои данные намного больше, ок.1 миллион строкВ каждой строке указан человек, а переменные соответствуют заболеваниям, которые есть у этого человека (1 = да)
Я хочу получить информационный кадр с долей людей из населения, которые имеют и не имеют каждого заболевания.
Это то, что я сделал, чтобы получить желаемый результат:
1) Составьте долю населения, для которой каждое условие индивидуально
Prop_cancer <- df %>%
group_by(cancer) %>%
summarise(count = n()) %>%
mutate(freq = round((count / sum(count))*100, digits = 1)) %>%
mutate(condition = "cancer") %>%
rename(Y_N = cancer)
Prop_CVD <- df %>%
group_by(CVD) %>%
summarise(count = n()) %>%
mutate(freq = round((count / sum(count))*100, digits = 1)) %>%
mutate(condition = "CVD") %>%
rename(Y_N = CVD)
Prop_diab <- df %>%
group_by(diab) %>%
summarise(count = n()) %>%
mutate(freq = round((count / sum(count))*100, digits = 1)) %>%
mutate(condition = "diab") %>%
rename(Y_N = diab)
Prop_stroke <- df %>%
group_by(stroke) %>%
summarise(count = n()) %>%
mutate(freq = round((count / sum(count))*100, digits = 1)) %>%
mutate(condition = "stroke") %>%
rename(Y_N = stroke)
Prop_asthma <- df %>%
group_by(asthma) %>%
summarise(count = n()) %>%
mutate(freq = round((count / sum(count))*100, digits = 1)) %>%
mutate(condition = "asthma") %>%
rename(Y_N = asthma)
Добавьте все этовместе
Prop_allcond <- bind_rows(Prop_cancer, Prop_CVD, Prop_stroke, Prop_diab, Prop_asthma)
У меня есть большое количество условий и много данных.Есть ли более простой / быстрый способ сделать это?
Я подумал о создании новой переменной 'условие' в исходном кадре данных с помощью оператора ifelse
, но это не позволяет человеку иметь более одногоусловия, а условия имеют приоритет в указанном порядке.
Буду признателен за совет, как упростить этот код, чтобы он не был таким длинным.