[問題] 有關排序之問題

作者: kakaman (日子過的真快阿)   2022-04-26 15:15:56
大家好,
有些關於R在處理資料上的問題想要請教,
若我要對資料進行多欄位的排序…有類別、日期等,大概長這樣:
1.有關多重排序並涉及類別
表1
姓名 檢查日期 試驗結果
張三 4/1 異常
李四 4/1 正常
王五 4/5 異常
王五 4/10 正常
李四 4/8 異常
張三 4/20 異常
張三 4/26 檢驗中
想讓他變成以下排序方式
表2
姓名 檢查日期 試驗結果
王五 4/5 異常
王五 4/10 正常
李四 4/8 異常
李四 4/1 正常
張三 4/1 異常
張三 4/20 異常
張三 4/26 檢驗中
這樣的寫法…好像行不通
表1$試驗結果 <- factor(表1$試驗結果, levels = c(“異常”, “正常”, “檢驗中”
)
表2 <- Order(表1$姓名, 表1$試驗結果, 表1$檢查日期)
2.文字轉日期格式真的很麻煩…
嘗試用過Strptime()、as.posixct()都失敗…出現整欄的N/A…
謝謝
作者: lycantrope (阿寬)   2022-04-26 16:09:00
Strptime 你有提供format嗎?例如 "%m/%d"
作者: Gjerry   2022-04-26 16:34:00
不介意加上年的話就先把 4/1 弄成 2022/4/1 然後用 lubridate::ymd 就可以轉換好了表1 <- 表1[order(表1$姓名, 表1$測驗結果, 表1$檢查日期), ] 應該就可以了
作者: fox1375 (阿吠)   2022-04-26 17:02:00
library(dplyr) 表2 <- 表1 %>% arrange(名,果,日)
作者: kakaman (日子過的真快阿)   2022-04-26 17:57:00
如果需要自行指定文字的順序,要再寫何種code?
作者: xiangying (xiangying)   2022-04-26 18:13:00
將變數改成factor,用levels自訂順序改時間可用lubridate::as_datetime
作者: fox1375 (阿吠)   2022-04-27 12:16:00
字串轉日期推薦lubridate套件parse_date_time( ,order = c("md"),tz = "Asia/Taipei")
作者: khaos (出來混的...)   2022-04-29 10:01:00
自行指定文字排序 如果不想寫死在程式裡 我的做法是另外建一個excel 第一欄序號 第二欄文字 然後讀進來去跟data frame做合併 就有序號可以排以後要改排序就excel改改 當成是一般參數檔

Links booklink

Contact Us: admin [ a t ] ucptt.com