x=seq(100)
我有一个x
我想要把所有x <10的元素 都放入 low
所有10 < x<50 的元素都放入 medium
所有 x>50的元素都放入 high
我自己的思路只到这边 就是利用逻辑函数完成
x[which(x<10)]
x[which(10<=x&x<50)]
x[which(50<=x)]
如果只有两个 很好使用 ifelse 完成
ifelse(x<10,"low"," medium " )
但是我现在有三个
有没有什么可以向量化的操作完成这件事
我原本想做
x[which(x<10)] <- "low"
x[which(10<=x&x<50)] <- "medium"
x[which(50<=x)] <- "high"
但是发现不行
想到解法了 好像把x换成 data.frame就可以了
发现还是不行 还望提供结法
作者:
locka (locka)
2020-03-26 21:46:00把转成data frame后,df %>% mutate(level = ifelse(x < 10, "low", ifelse(x >=50, "high" , "medium")))或是 cut(x, c(-Inf,10,50,Inf), c("low","medium","high"),right=T) 这样就不用转data frame