[问题] 有关排序之问题

楼主: 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