dhfly df1=data.frame(age=c(60,20,65,25), sex=c("m","f","f","m")) 条件:ifelse(age>30,old,yun). 形成df2=data.frame(age=c(60,20,65,25), sex=c("m","f","f","m"),id=c("oldm","yunf","oldf","yunm"))
Liechi df1$id <- ifelse(df1$age > 30, "old", "yun") df2 <- transform(df1, id = paste(id, sex, sep = ""))
DFY library(dplyr) library(magrittr) df1=data.frame(age=c(60,20,65,25), sex=c("m","f","f","m")) df2=df1 %>% mutate(sex = case_when(age > 30 ~ paste0('old',sex), TRUE ~ paste0('yun',sex)))
yusong 看到标题就想到了cut()函数,然后再用tidyr中的unite() 函数: df1 %>% mutate(young_or_old = cut(age, breaks = c(0, 30, Inf), c("young", "old"))) %>% unite(sex,young_or_old,col = "id2", sep = "_", remove = FALSE) 前两个答案,代码很优雅,无奈没有好好审题,说好的是要替代ifelse的,🤣