为什么 R 中的 sort 与 mutate 表现不佳?

问题描述 投票:0回答:1

我的数据的列名称为 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

r sorting dplyr mutate
1个回答
0
投票

您可以使用

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, …
© www.soinside.com 2019 - 2024. All rights reserved.