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

看板R_Language作者 (empireisme)時間4年前 (2020/03/26 20:57), 4年前編輯推噓3(305)
留言8則, 5人參與, 4年前最新討論串1/1
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就可以了 發現還是不行 還望提供結法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.91.75.186 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1585227470.A.6D7.html ※ 編輯: empireisme (219.91.75.186 臺灣), 03/26/2020 21:01:27 ※ 編輯: empireisme (219.91.75.186 臺灣), 03/26/2020 21:08:20 ※ 編輯: empireisme (219.91.75.186 臺灣), 03/26/2020 21:25:58

03/26 21:46, 4年前 , 1F
把轉成data frame後,df %>% mutate(level = ifelse(x < 10
03/26 21:46, 1F

03/26 21:46, 4年前 , 2F
, "low", ifelse(x >=50, "high" , "medium")))
03/26 21:46, 2F

03/26 22:10, 4年前 , 3F
或是 cut(x, c(-Inf,10,50,Inf), c("low","medium","high")
03/26 22:10, 3F

03/26 22:10, 4年前 , 4F
,right=T) 這樣就不用轉data frame
03/26 22:10, 4F

03/26 22:52, 4年前 , 5F
用apply行不行?
03/26 22:52, 5F

03/26 23:01, 4年前 , 6F
cut()最直接,頂多再接個as.character() 若不愛factor
03/26 23:01, 6F

03/27 09:17, 4年前 , 7F
03/27 09:17, 7F

03/29 06:39, 4年前 , 8F
case_when
03/29 06:39, 8F
文章代碼(AID): #1UVARERN (R_Language)