代码之家  ›  专栏  ›  技术社区  ›  Laura

使用dpylr使用mutate创建一个新变量,新值将应用于第三个变量的每个相关值。

  •  1
  • Laura  · 技术社区  · 7 年前

    df <- data.frame(
    ID = c(rep("A12345",5), rep("A23456",10), rep("A34567",5), "A45678", "A67891", rep("A78910",8), "A91011", 
           rep("A10111",4), rep("A11121",3), "A12131", "A16731"),
    indicator = c(rep("colchicine",5), rep("febuxosat",9), "hosps", rep("colchicine",5), "hosps", "colchicine", 
                  rep("allopurinol",8), "allopurinol", 
                  rep("colchicine",3), "hosps", rep("colchicine",3), "colchicine", "allopurinol"),
    Date = c("2004-12-08", "2005-01-28", "2005-07-15", "2005-08-23", "2005-11-30", "2007-02-01", "2007-07-20", "2014-06-03", 
             "2008-04-17",
             "2008-12-19", "2009-09-09", "2010-02-24", "2010-11-01", "2010-12-03", "2011-08-10", "2012-11-05", "2012-12-17", 
             "2012-12-19", "2013-10-03", "2013-12-11", "2014-03-26", "2015-11-12", "2014-08-07", "2008-01-31", "2008-02-21", 
             "2008-09-19", "2008-11-06", "2009-01-06", "2009-01-14", "2009-03-25", "2009-03-27", "2009-06-18", "2009-08-18", 
             "2009-09-08", "2009-11-13", "2010-01-21", "2010-04-19", "2010-07-07", "2010-08-06", "2010-08-19")
    )
    

    我想做的是,如果对于id变量,存在indicator==“hops”的任何实例,那么创建一个名为“hop_ever”的新指示器,它等于1。如果对于任何ID,指标变量中都没有“hops”的实例,则新的“hop_ever”变量等于0。

    df_group <- df %>%
    group_by(ID) %>%
    mutate(hosp_ever = ifelse(indicator == "hosps", "Y", "N"))
    

    这将创建新的hop-ever变量,但仅为indicator==hops的实例分配“Y”,hop-ever没有正确分配给指示器所在的ID!临终关怀,但他们在某个日期有过一次临终关怀活动。

    df_group <- df %>%
    mutate(hosps_ever = c(rep("N",5), rep("Y",9), "Y", rep("N",5), "Y", "N", 
         rep("N",8), "N", 
         rep("Y",3), "Y", rep("N",3), "N", "N"))
    

    有人知道我哪里出错了吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Tung    7 年前

    any indicator 在一定程度上 ID hosps

    library(dplyr)
    
    df_group <- df %>%
      group_by(ID) %>%
      mutate(hosp_ever = ifelse(any(indicator == "hosps"), "Y", "N"))
    
    df_group
    #> # A tibble: 40 x 4
    #> # Groups:   ID [11]
    #>    ID     indicator  Date       hosp_ever
    #>    <fct>  <fct>      <fct>      <chr>    
    #>  1 A12345 colchicine 2004-12-08 N        
    #>  2 A12345 colchicine 2005-01-28 N        
    #>  3 A12345 colchicine 2005-07-15 N        
    #>  4 A12345 colchicine 2005-08-23 N        
    #>  5 A12345 colchicine 2005-11-30 N        
    #>  6 A23456 febuxosat  2007-02-01 Y        
    #>  7 A23456 febuxosat  2007-07-20 Y        
    #>  8 A23456 febuxosat  2014-06-03 Y        
    #>  9 A23456 febuxosat  2008-04-17 Y        
    #> 10 A23456 febuxosat  2008-12-19 Y        
    #> # ... with 30 more rows
    

    创建日期:2018-06-26 reprex package

    推荐文章