看板 R_Language 關於我們 聯絡資訊
各位好,也許這是一個笨問題QQ 先謝謝各位回答。 假設我有一個欄位hr,紀錄從0-23的數字,也就是小時。 現在想要把不同的hr,對應到不同的時辰。 判斷規則為取下限不取上限, 也就是1對應到丑時而不是子時,13對應到未時而不是午時...etc 我的做法是用cut cut(hr, c(0,1,3,5,7,9,11,13,15,17,19,21,23,24), c("子","丑","寅","卯","辰","巳 ","午","未","申","酉","戌","亥","子"),right=FALSE) 因為有23-1的問題,所以我的做法是把它切成0-1、23-24,分開來指定為子時。 可是這樣會有錯誤訊息: Warning message: In `levels<-`(`*tmp*`, value = if (nl ==nL) as.character(labels, : duplicated levels in factors are deprecated 不曉得有沒有其他建議的做法? 謝謝大家。 [程式範例]: http://ideone.com/w5FX6F -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.110.191 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1448613128.A.E59.html
celestialgod: http://pastebin.com/rSxR6mVu 11/27 16:49
謝謝C大,我剛剛研究了一下您的code, 直接指定各自的時辰給24個hr也不失為一個好方法! 學到了mapvalues的用法,學習了! 另外我剛剛試出來,只要重新factor,也可以得出正確結果。(忽略警告訊息的話啦) test <- factor(cut(call_time, c(0,1,3,5,7,9,11,13,15,17,19,21,23,24), c("子"," 丑","寅","卯","辰","巳","午","未","申","酉","戌","亥","子"),right=FALSE)) (試著在factor()上色,失敗放棄QQ) ※ 編輯: locka (140.112.110.191), 11/27/2015 17:12:07 ※ 編輯: locka (140.112.110.191), 11/27/2015 17:14:03 ※ 編輯: locka (140.112.110.191), 11/27/2015 17:15:56
andrew43: 子時切成「子1」和「子2」,之後再把二者改成「子」 11/27 17:32
celestialgod: 基本上差不多快,你選擇你喜歡的方法即可 11/30 12:58