R 如何在重复元素具有相同顺序的向量中查找元素的顺序?
我有一个向量R 如何在重复元素具有相同顺序的向量中查找元素的顺序?,r,sorting,R,Sorting,我有一个向量x=[5,5,3,2,2]。元素的排名是其在唯一值降序列表中的位置。我想返回包含每个元素的秩的向量,即[1,1,2,3,3]。不幸的是,函数order无法完成此任务 x <- c(5, 5, 3, 2, 2) order(x) 请详细说明如何操作?1)因子转换为具有指定级别的因子,然后转换为数值以获得级别编号: as.numeric(factor(x, levels = unique(x))) ## [1] 1 1 2 3 3 2)匹配另一种可能性是使用match: mat
x=[5,5,3,2,2]
。元素的排名是其在唯一值降序列表中的位置。我想返回包含每个元素的秩的向量,即[1,1,2,3,3]
。不幸的是,函数order
无法完成此任务
x <- c(5, 5, 3, 2, 2)
order(x)
请详细说明如何操作?1)因子转换为具有指定级别的因子,然后转换为数值以获得级别编号:
as.numeric(factor(x, levels = unique(x)))
## [1] 1 1 2 3 3
2)匹配另一种可能性是使用match
:
match(x, unique(x))
## [1] 1 1 2 3 3
3)findIntervalfindInterval
要求在第二个参数中使用非降序数字,因此我们对x求反
findInterval(-x, unique(-x))
## [1] 1 1 2 3 3
4)差异/累计
cumsum(c(TRUE, diff(x) != 0))
## [1] 1 1 2 3 3
5)rle
r <- rle(x)
r$values <- seq_along(r$values)
inverse.rle(r)
## [1] 1 1 2 3 3
r1)因子转换为具有指示级别的因子,然后转换为数值以获得级别编号:
as.numeric(factor(x, levels = unique(x)))
## [1] 1 1 2 3 3
2)匹配另一种可能性是使用match
:
match(x, unique(x))
## [1] 1 1 2 3 3
3)findIntervalfindInterval
要求在第二个参数中使用非降序数字,因此我们对x求反
findInterval(-x, unique(-x))
## [1] 1 1 2 3 3
4)差异/累计
cumsum(c(TRUE, diff(x) != 0))
## [1] 1 1 2 3 3
5)rle
r <- rle(x)
r$values <- seq_along(r$values)
inverse.rle(r)
## [1] 1 1 2 3 3
r第二种解决方案不适用于行。问题是,值正在下降,因此这不是有效的输入。哦,我的意思是,通过仅包含唯一值的排序列表来“降序唯一值列表”。不清楚什么是“降序唯一值列表”意思是说,但是我在原来的问题上又增加了两个解决方案,这可能是或者可能是你需要的,来解决修改后的问题。它们从1开始,每次值与前一个值发生变化时,都会将值增加1。第二种解决方案不适用于行。问题是,值正在下降,因此这不是有效的输入。哦,我的意思是,通过只包含唯一值的排序列表来“唯一值的下降列表”。不清楚是什么“desecnding list of unique values”(删除唯一值列表)的意思是,我为原始问题添加了另外两个解决方案,这可能是或可能是您对修改后的问题所需要的。它们从1开始,每次值从前一个值更改时,都会将值增加1。