简体   繁体   English

组 1 的结果类型``在 dplyr mutate 中使用因子时出错

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

The following code throws me an error:以下代码向我抛出了一个错误:

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))

The error is错误是

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.

I did not find immediately the answer on the web, so I thought it might be of some interest for the community.我没有立即在网上找到答案,所以我认为这可能会引起社区的兴趣。

The problem here seems that trying to use the factor function on a grouped variable causes an error.这里的问题似乎是尝试对grouped变量使用factor函数会导致错误。 Simply adding an ungroup step solves the problem:只需添加一个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.

相关问题 将dplyr :: mutate与mapply一起使用时出错 - Error when using dplyr::mutate with mapply 在dplyr包中使用group_by和mutate通过id变量创建新的factor因子 - Using group_by and mutate in dplyr package to create new factor variable by id variable 使用 Dplyr mutate 中设置的动态列名时结果不正确 - Incorrect result when using dynamic column name set in Dplyr mutate dplyr,分组依据和变异-错误的结果大小 - dplyr, group by and mutate - wrong result size 当使用 dplyr group by 和 summarise() 时,is.factor(x) 中出现错误:缺少参数“x”,没有默认值 - When using dplyr group by and summarise() I get Error in is.factor(x) : argument “x” is missing, with no default R - 重新编码因子变量时,dplyr mutate recode 出错“由 `recode()` 中的错误引起:!必须命名参数 2。” - R - Error in dplyr mutate recode when recoding factor variables "Caused by error in `recode()`: ! Argument 2 must be named." dplyr group_by的异常行为,然后加上mutate中的factor - Unexpected behavior with dplyr group_by followed by factor in mutate (dplyr) 使用 mutate()、case_when() 和 which() 时出错 - (dplyr) Error when using mutate(), case_when() and which() dplyr-使用rowwise()时在mutate中未正确传递的因子级别的名称 - dplyr - names of levels of factor not being passed properly within mutate when using rowwise() 按组连续的天数-突变函数Dplyr中的错误 - Consecutive Days by Group - Error in Mutate Function Dplyr
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM