将 Dataframe 变量“变异”为因子时指定级别

wyyhbhjk  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(104)

假设我有以下名为datatibble Dataframe :

library(tibble)

data <- tribble(
    ~"ID", ~"some factor", ~"some other factor", 
    1L, "low", "high",
    2L, "very high", "low",
    3L, "very low", "low",
    4L, "high", "very high",
    5L, "very low", "very low"
)

我使用forcats中的fct()函数来相应地转换我的两个因子变量:

library(dplyr)
library(forcats)

data <- data %>%
        mutate(across(starts_with("some"), fct))

这就给了我:

# A tibble: 5 × 3
     ID `some factor` `some other factor`
  <int> <fct>         <fct>              
1     1 low           high               
2     2 very high     low                
3     3 very low      low                
4     4 high          very high          
5     5 very low      very low

然而,当我这样调用fct时,我不清楚如何指定这个有序变量的水平,我希望的顺序是:

order <- c("very low", "low", "high", "very high")

**如何使用dplyr的函数集?**我们的目标是使ggplot2可视化遵守这种顺序。

okxuctiv

okxuctiv1#

使用across()时,可以通过across...将额外的参数传递给被调用的函数。

data <- data %>%
  mutate(across(starts_with("some"), fct, levels = order))

这相当于

data <- data %>%
  mutate(across(starts_with("some"), function(x) fct(x, levels = order)))

(This是R中的一个常见范例,许多应用函数的函数都有一个...参数,用于传递给所应用的函数,另请参见lapplysapplypurrr::map等。)

6mw9ycah

6mw9ycah2#

order <- c("very low", "low", "high", "very high")

data <- data %>%
  mutate(across(starts_with("some"), fct, order))

应该可以

相关问题