這個問題類似于
uj5u.com熱心網友回復:
當您使用 時match,您需要 (a) 為其提供所有可能的不同值,或 (b) 知道回傳的NA值本質上是您想要/需要的。
在使用
arrange(match(WeekP, weekdays(input$daterange1)))
它再次匹配幾個值的值,僅匹配兩件事的值。您不是告訴它根據完整的事物序列進行排序,而是告訴 R “請根據兩個字串對此事物向量進行排序”。你是假設R將推斷出什么這兩個字串,以及如何以專案是推理到您的資料的其余部分。
在這種情況下,由于weekdays(input$..)僅包含一周中的兩天,因此您的其他所有內容match(.)都是NA,這顯然已損壞。如果你進一步除錯你的代碼并查看just match(.., weekdays(..)) (assign to some column)的輸出,你會看到
left_join(meanTest, wk_port2eng, by = c("Week" = "WeekE")) %>%
select(-WeekP) %>%
mutate(sortcol = match(Week, weekdays(input$daterange1)))
# # A tibble: 7 x 4
# Week Category mean sortcol
# <chr> <chr> <dbl> <int>
# 1 Friday FDE 3 NA
# 2 Monday FDE 4 NA
# 3 Saturday FDE 3 2
# 4 Sunday FDE 4 1
# 5 Thursday FDE 2 NA
# 6 Tuesday FDE 6 NA
# 7 Wednesday FDE 3 NA
為此arrange將不會神奇地推斷出你的需求。
使用seq您的輸入范圍。
left_join(meanTest, wk_port2eng, by = c("Week" = "WeekE")) %>%
select(-WeekP) %>%
mutate(sortcol = match(Week, unique(weekdays(seq(input$daterange1[1], input$daterange1[2], by = "day")))))
# # A tibble: 7 x 4
# Week Category mean sortcol
# <chr> <chr> <dbl> <int>
# 1 Friday FDE 3 6
# 2 Monday FDE 4 2
# 3 Saturday FDE 3 7
# 4 Sunday FDE 4 1
# 5 Thursday FDE 2 5
# 6 Tuesday FDE 6 3
# 7 Wednesday FDE 3 4
所以一個反應塊應該是:
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,] ### if weekday is in Portuguese in your notebook
wk <- wk_port2eng[wk_port2eng$WeekE %in% weeks_inp,] ### if weekday is in English in your notebook
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),]
left_join(meanTest, wk_port2eng, by = c("Week" = "WeekE")) %>%
select(-WeekP) %>%
arrange(match(Week, unique(weekdays(seq(input$daterange1[1], input$daterange1[2], by = "day")))))
})
生產:

順便說一句,只要您總是按星期幾進行總結,這就可以正常作業,在這種情況下,weekdays(.)應始終回傳唯一的向量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/352269.html
上一篇:2021-11-07
下一篇:R根據多個條件分配值
