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

根据R中其他列中的条件,将数字附加到列中的字符串

r
  •  3
  • Cina  · 技术社区  · 6 年前

    MATH 编队 course 基于以下条件;每人 ID 如果 output pass 在下一个步骤中,将附加的数字增加1 数学 . 以下是一个例子:

    df = read.table(text = 
    'ID  course  outcome
     10  MATH    fail
     10  PHYS    pass
     10  MATH    pass
     10  MATH    fail
     10  CHEM    pass
     11  MATH    pass
     11  PHYS    fail
     12  CMP     pass
     12  MATH    fail
     12  MATH    fail
     12  CHEM    pass
     12  MATH    pass
     12  MATH    fail', header = T)
    
    
    df_result = read.table(text = 
      'ID  course  outcome
       10  MATH1    fail
       10  PHYS     pass
       10  MATH1    pass
       10  MATH2    fail
       10  CHEM     pass
       11  MATH1    pass
       11  PHYS     fail
       12  CMP      pass
       12  MATH1    fail
       12  MATH1    fail
       12  CHEM     pass
       12  MATH1    pass
       12  MATH2    fail', header = T)
    

    1 回复  |  直到 6 年前
        1
  •  3
  •   Callum Webb    6 年前

    dplyr

    df %>% 
      group_by(ID) %>%
      mutate(math_pass_count = 1 + lag(cumsum(course == "MATH" & outcome == "pass"), 
                                       default = 0),
             suffix = ifelse(course == "MATH", math_pass_count, ""),
             course = paste0(course, suffix)) %>%
      select(-math_pass_count, -suffix)