我有一个 tibble,d
,其排列方式是 value
递减。
我想将所有相同的 type
收集在一起,同时保持每个 type
第一个条目的相对排列。这显示在 d_sorted
中。
普通的 group_by()
对我不起作用。
如何对我的数据进行排序?
library(tidyverse)
#before
d <- tribble(
~"type", ~"value",
"R" , 109,
"C" , 105,
"B" , 80,
"W" , 77,
"R" , 70,
"W" , 66,
"A" , 58,
"C" , 55
)
#after
d_sorted <- tribble(
~"type", ~"value",
"R" , 109,
"R" , 70,
"C" , 105,
"C" , 55,
"B" , 80,
"W" , 77,
"W" , 66,
"A" , 58
)
由 reprex package 创建于 2021-04-15 (v1.0.0)
最佳答案
您可以将 arrange
与 match
一起使用:
library(dplyr)
d %>% arrange(match(type, unique(type)))
# type value
# <chr> <dbl>
#1 R 109
#2 R 70
#3 C 105
#4 C 55
#5 B 80
#6 W 77
#7 W 66
#8 A 58
在基础 R 中:
d[order(match(d$type, unique(d$type))), ]
关于r - 排序数据保持不同类型首次出现的原始相对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67104934/