我是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]
}
答案 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/