[問題]依照index放入文字於向量中

作者: empireisme (empireisme)   2020-03-26 20:57:47
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
作者: khaos (出來混的...)   2020-03-26 22:52:00
用apply行不行?
作者: andrew43 (討厭有好心推文後刪文者)   2020-03-26 23:01:00
cut()最直接,頂多再接個as.character() 若不愛factor
作者: empireisme (empireisme)   2020-03-27 09:17:00
作者: bboybighead2 (腳毛會唱歌)   2020-03-29 06:39:00
case_when

Links booklink

Contact Us: admin [ a t ] ucptt.com