首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从最丰富物种到最不丰富物种排列物种列表数据集

如何从最丰富物种到最不丰富物种排列物种列表数据集
EN

Stack Overflow用户
提问于 2022-05-11 08:07:31
回答 3查看 54关注 0票数 1

我有一个如下所示的数据集。R中是否有一行代码来排列从最丰富的物种(在列中发生的最多)到最少的物种?谢谢!

代码语言:javascript
复制
df <- tibble::tribble(
  ~name,
  "Species A",
  "Species A",
  "Species B",
  "Species C",
  "Species A",
  "Species C",
  "Species B",
  "Species A"
)
EN

回答 3

Stack Overflow用户

发布于 2022-05-11 08:12:50

您可以尝试使用table,对此进行排序,使用matchnamesorder进行排序。

代码语言:javascript
复制
df[order(match(df$name, names(sort(table(df$name), decreasing=TRUE)))),]
## A tibble: 8 × 1
#  name     
#  <chr>    
#1 Species A
#2 Species A
#3 Species A
#4 Species A
#5 Species B
#6 Species B
#7 Species C
#8 Species C

或者使用split

代码语言:javascript
复制
. <- split(seq_len(nrow(df)), df$name)
df[unlist(.[order(lengths(.), decreasing=TRUE)], FALSE, FALSE),]
## A tibble: 8 × 1
#  name     
#  <chr>    
#1 Species A
#2 Species A
#3 Species A
#4 Species A
#5 Species B
#6 Species B
#7 Species C
#8 Species C

或者,如果只对向量进行排序:

代码语言:javascript
复制
. <- sort(table(df$name), decreasing=TRUE)
rep(names(.), .)
#[1] "Species A" "Species A" "Species A" "Species A" "Species B" "Species B"
#[7] "Species C" "Species C"
票数 2
EN

Stack Overflow用户

发布于 2022-05-11 08:18:25

您还可以按事件发生的次数对该因素进行reorder,然后sort该因素:

代码语言:javascript
复制
data$species <- reorder(data$species, data$species, FUN = length) |>
  sort(decreasing = T)

输出

代码语言:javascript
复制
data

    species  
1 Species A
2 Species A
3 Species A
4 Species A
5 Species C
6 Species C
7 Species B
8 Species B
票数 1
EN

Stack Overflow用户

发布于 2022-05-11 09:15:13

data.table解决方案

代码语言:javascript
复制
library(data.table)

data <- setDT(data)[, n := .N, species][order(-n, species)][, n := NULL]

输出

代码语言:javascript
复制
data

#      species
# 1: Species A
# 2: Species A
# 3: Species A
# 4: Species A
# 5: Species B
# 6: Species B
# 7: Species C
# 8: Species C

数据

代码语言:javascript
复制
data <- tibble(
  species = c(
  "Species A",
  "Species A",
  "Species B",
  "Species C",
  "Species A",
  "Species C",
  "Species B",
  "Species A")
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72197526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档