[問題] 有關排序之問題

看板R_Language作者 (日子過的真快阿)時間1年前 (2022/04/26 15:15), 編輯推噓4(4011)
留言15則, 6人參與, 1年前最新討論串1/1
大家好, 有些關於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… 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.221.44 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1650957358.A.759.html

04/26 16:09, 1年前 , 1F
Strptime 你有提供format嗎?例如 "%m/%d"
04/26 16:09, 1F

04/26 16:34, 1年前 , 2F
不介意加上年的話就先把 4/1 弄成 2022/4/1 然後用 lubr
04/26 16:34, 2F

04/26 16:34, 1年前 , 3F
idate::ymd 就可以轉換好了
04/26 16:34, 3F

04/26 16:38, 1年前 , 4F
表1 <- 表1[order(表1$姓名, 表1$測驗結果, 表1$檢查日期
04/26 16:38, 4F

04/26 16:38, 1年前 , 5F
), ] 應該就可以了
04/26 16:38, 5F

04/26 17:02, 1年前 , 6F
library(dplyr) 表2 <- 表1 %>% arrange(名,果,日)
04/26 17:02, 6F

04/26 17:57, 1年前 , 7F
如果需要自行指定文字的順序,要再寫何種code?
04/26 17:57, 7F

04/26 18:13, 1年前 , 8F
將變數改成factor,用levels自訂順序
04/26 18:13, 8F

04/26 18:14, 1年前 , 9F
改時間可用lubridate::as_datetime
04/26 18:14, 9F

04/27 12:16, 1年前 , 10F
字串轉日期推薦lubridate套件
04/27 12:16, 10F

04/27 12:17, 1年前 , 11F
parse_date_time( ,order = c("md"),tz = "Asia/Taipei")
04/27 12:17, 11F

04/29 10:01, 1年前 , 12F
自行指定文字排序 如果不想寫死在程式裡 我的做法是
04/29 10:01, 12F

04/29 10:02, 1年前 , 13F
另外建一個excel 第一欄序號 第二欄文字 然後
04/29 10:02, 13F

04/29 10:02, 1年前 , 14F
讀進來去跟data frame做合併 就有序號可以排
04/29 10:02, 14F

04/29 10:02, 1年前 , 15F
以後要改排序就excel改改 當成是一般參數檔
04/29 10:02, 15F
文章代碼(AID): #1YPvmkTP (R_Language)
文章代碼(AID): #1YPvmkTP (R_Language)