使用if循环创建一个函数

时间:2018-07-20 13:27:56

标签: r

我是R的初学者,所以我这样编码。但我想知道如何使此代码“更轻”。我知道我可以使用函数,但不知道如何使用。你能帮忙吗:

  for(i in 1:x){

  if ((id_base_full$Bucket.Amount[i] >= 150000))  {
    id_base_full$Case.Number[i] <- 1

  }else if(startsWith(id_base_full$HI.Event.Type[i],"4")||
           startsWith(id_base_full$HI.Event.Type[i],"1")||
           startsWith(id_base_full$HI.Event.Type[i],"2")){
    id_base_full$Case.Number[i] <- 1

  }else if ((id_base_full$HI.Long.Term.Flag[i] == "Yes"))  {
    id_base_full$Case.Number[i] <- 1

  }else if ((id_base_full$HI.Relevancy[i] == "Obsolete"))  {
    id_base_full$Case.Number[i] <- 1

  }else{ 
    id_base_full$Case.Number[i] <- 2  

  }
  next [i]
}

1 个答案:

答案 0 :(得分:0)

使用case_when()包中的函数dplyr将有助于您将函数应用于数据帧的行/列,以下代码段将条件逻辑应用于变量HI.Event.Type ,由此创建一个新变量new_var

my_data %>% mutate(new_var = case_when( HI.Event.Type %in% c(4,1,2) ~ "1", TRUE ~ "baseline value")

在此处查看dplyr文档:https://dplyr.tidyverse.org/