Shiny应用中如何调整表格星期排序为用户选定的日期先后顺序
调整方法
你的表格按字母顺序排序的原因是Week列是字符串类型,默认按首字母排序,M开头的Monday自然排在S开头的Sunday前面。只要将Week列转为因子,因子水平设置为你选择的日期对应的星期先后顺序即可,只需要修改data_subset响应函数的最后部分:
data_subset <- reactive({ req(input$daterange1) req(input$daterange1[1] <= input$daterange1[2]) days <- seq(input$daterange1[1], input$daterange1[2], by = 'day') Test1 <- dplyr::filter(data(), date1 %in% days) weeks_inp <- unique(weekdays(days)) wk <- wk_port2eng[wk_port2eng$WeekP %in% weeks_inp,] ### 如果你的系统环境是葡萄牙语用这行 #wk <- wk_port2eng[wk_port2eng$WeekE %in% weeks_inp,] ### 如果你的系统环境是英语用这行 weeks_ine <- wk$WeekE meanTest1 <- data() %>% group_by(Week = tools::toTitleCase(Week), Category) %>% summarise(mean = mean(time, na.rm = TRUE), .groups = 'drop') meanTest <- meanTest1[meanTest1$Week %in% as.character(weeks_ine),] # 新增两行代码调整顺序 meanTest$Week <- factor(meanTest$Week, levels = weeks_ine) meanTest <- dplyr::arrange(meanTest, Week) meanTest })
改动说明
weeks_ine本身就是按你选择的日期顺序生成的对应星期列表,天然就是你要的先后顺序- 将
Week列转为因子,水平设置为weeks_ine的顺序,再按Week排序,就能完全匹配你选择的时段的星期先后,选周日到周一就会显示周日在前、周一在后。
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

