[問題] 用cut對應時辰

看板R_Language作者 (locka)時間10年前 (2015/11/27 16:32), 10年前編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
各位好,也許這是一個笨問題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

11/27 16:49, , 1F
謝謝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

11/27 17:32, , 2F
子時切成「子1」和「子2」,之後再把二者改成「子」
11/27 17:32, 2F

11/30 12:58, , 3F
基本上差不多快,你選擇你喜歡的方法即可
11/30 12:58, 3F
文章代碼(AID): #1MM1K8vP (R_Language)
文章代碼(AID): #1MM1K8vP (R_Language)