Создание новой переменной на основе двух других столбцов, содержащих категории с tidyverse
Я пытаюсь манипулировать данными и хочу создать новую переменную на основе двух столбцов с категориальными уровнями. Я пытался добиться этого с помощью Tidyverse, 3 способами (нужно придерживаться этой библиотеки).
Это то, что я пытался.
data_indices <- df_subs %>%
mutate(ifelse(sex == "Female" & patient.class == "Not_Admitted", "female_not_admitted",
ifelse(sex == "Female" & patient.class == "ORDINARY ADMISSION", "female_admitted",
ifelse(sex == "Male" & patient.class == "Not_Admitted", "male_not_admitted",
ifelse(sex == "Male" & patient.class == "ORDINARY ADMISSION", "male_admitted")))))
Тем не менее, я получил ошибку:
Error in mutate_impl(.data, dots) :
Evaluation error: argument "no" is missing, with no default.
Во-вторых, я также попытался объединить функцию в Tidyverse, но не удалось.
И наконец, в-третьих, я искал и нашел групповые индексы в той же библиотеке. Это то, что я сделал, но с треском провалился.:)
data_indices <- ds_sum_age_sex %>%
bind_cols(Group_indic = group_indices("patient.class", "sex"))
С ошибкой:
Error in UseMethod("group_indices_") :
no applicable method for 'group_indices_' applied to an object of class
"character"
Может кто-нибудь помочь, пожалуйста?
1 ответ
Решение
Немного сложно понять, для чего нужны функции. Но вот предположение:)
df_subs <- data.frame(sex = c("Male",
"Female",
"Female"),
patient.class = c("Not_Admitted",
"ORDINARY ADMISSION",
"ORDINARY ADMISSION"))
# Question 1
df_subs %>%
mutate(sex_patient_class = case_when(
sex == "Female" & patient.class == "Not_Admitted" ~ "female_not_admitted",
sex == "Female" & patient.class == "ORDINARY ADMISSION" ~ "female_admitted",
sex == "Male" & patient.class == "Not_Admitted" ~ "male_not_admitted",
sex == "Male" & patient.class == "ORDINARY ADMISSION" ~ "male_admitted"
))
# Question 2
df_subs %>%
unite(sex_patient_class, sex, patient.class, sep = "_")
# Question 3
df_subs %>%
mutate(group_indices = group_indices(., patient.class, sex))