簡體   English   中英

組 1 的結果類型``在 dplyr mutate 中使用因子時出錯

[英]Result type for group 1`` Error when using factor in dplyr mutate

以下代碼向我拋出了一個錯誤:

dfTest <- structure(list(Year = c(2018, 2018, 2018, 2018, 2018, 2018, 2018, 
                        2018, 2018, 2018, 2018, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 
                        2019, 2019, 2019, 2019, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 
                        2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 
                        2021, 2021, 2021, 2021)),
          class = c("grouped_df", "tbl_df", "tbl", "data.frame"),
          row.names = c(NA, -44L),
          groups = structure(list(
            Year = c(2018, 2019, 2020, 2021), 
            .rows = structure(list( 1:11, 12:22, 23:33, 34:44),
                              ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", "list"))),
            class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -4L), .drop = TRUE))

dfTest %>% mutate(Year = factor(Year, ordered = T))

錯誤是

Error in `mutate()`:
! Problem while computing `Year = factor(Year, ordered = T)`.
Caused by error:
! `Year` must return compatible vectors across groups.
ℹ Result type for group 1 (Year = 2018): <ordered<a0764>>.
ℹ Result type for group 2 (Year = 2019): <ordered<4e60d>>.
Run `rlang::last_error()` to see where the error occurred.

我沒有立即在網上找到答案,所以我認為這可能會引起社區的興趣。

這里的問題似乎是嘗試對grouped變量使用factor函數會導致錯誤。 只需添加一個ungroup步驟即可解決問題:

dfTest <- structure(list(Year = c(2018, 2018, 2018, 2018, 2018, 2018, 2018, 
                        2018, 2018, 2018, 2018, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 
                        2019, 2019, 2019, 2019, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 
                        2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 
                        2021, 2021, 2021, 2021)),
          class = c("grouped_df", "tbl_df", "tbl", "data.frame"),
          row.names = c(NA, -44L),
          groups = structure(list(
            Year = c(2018, 2019, 2020, 2021), 
            .rows = structure(list( 1:11, 12:22, 23:33, 34:44),
                              ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", "list"))),
            class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -4L), .drop = TRUE))

dfTest %>%
ungroup %>%
mutate(Year = factor(Year, ordered = T))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM