Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在重复元素具有相同顺序的向量中查找元素的顺序?_R_Sorting - Fatal编程技术网

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)findInterval
findInterval
要求在第二个参数中使用非降序数字,因此我们对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)findInterval
findInterval
要求在第二个参数中使用非降序数字,因此我们对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。