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"))

7 天 后

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)))

14 天 后

看到标题就想到了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的,🤣

1 个月 后