我的数据的列名称为 Hosts,有 11 个主机名称。
当我使用
sort(unique(Hosts)
时,它会按字母顺序对主机进行排序。但是,当我想要 factor
主机与 mutate
时,它不会按字母顺序排序。谁能帮我解决为什么 sort
不使用 mutate
按字母顺序对主机进行排序吗?或者我的代码有问题吗?
这是单独使用排序时的输出:
> sort(unique(Hosts)) [1] "Artificialdiet" "Castor" "Cotton" "Cowpea" "Maize" [6] "Pearlmillet" "Rice" "Sorghum" "Soybean" "Sunflower" [11] "Tomato"
df <- df |> mutate(Hosts = factor(Hosts, labels = sort(unique(Hosts))))
这是输出:
$ Hosts: Factor w/ 11 levels "Soybean","Castor",..: 1 1 1 1 1 1 1 1 1 1 ...
11 Levels: Soybean Castor Sorghum Cowpea Maize Rice Pearlmillet Sunflower Cotton ... Artificialdiet
您可以使用
ordered
参数
library(tidyverse)
df <- tibble(Hosts = c("Artificialdiet", "Castor", "Cotton", "Cowpea", "Maize",
"Pearlmillet", "Rice", "Sorghum", "Soybean", "Sunflower", "Tomato"))
df %>%
mutate(Hosts = factor(Hosts, ordered = TRUE))
# A tibble: 11 × 1
Hosts
<ord>
1 Artificialdiet
2 Castor
3 Cotton
4 Cowpea
5 Maize
6 Pearlmillet
7 Rice
8 Sorghum
9 Soybean
10 Sunflower
11 Tomato
Rows: 11
Columns: 1
$ Hosts <ord> Artificialdiet, Castor, Cotton, Cowpea, Maize, Pearlmillet, Rice, Sorghum, Soybean, Sunflower, …