【问题标题】:Creating new variable based on two other columns containing categories with tidyverse基于包含 tidyverse 类别的其他两列创建新变量
【发布时间】:2018-08-15 16:34:53
【问题描述】:

我正在尝试操作数据并希望基于两个具有分类级别的列创建新变量。我试图通过 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 中的 unite 功能,但没有成功。

最后,第三,我在同一个库中搜索并找到了组索引。这就是我所做的,但惨遭失败。 :)

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"

有人可以帮忙吗?

【问题讨论】:

    标签: r dplyr


    【解决方案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))
    

    【讨论】:

    • @ Charlicito - 我需要从这两个列中获取一列,gender 和 patient.class - 并尝试了我给出的所有三个示例。现在清楚了吗?
    • @ Charlicito - 我需要从这两个列中获取一列,gender 和 patient.class - 并尝试了我给出的所有三个示例。现在清楚了吗?试过它们都很好用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    相关资源
    最近更新 更多