我想用rank()函数对矢量进行排名。 但是,我要求= 0的值返回= 0的等级,然后对于具有最低值的元素,排名继续为1 ...
示例:
a<-c(0, 0:5, 0)
rank(a, ties.method="first")
(不受欢迎)输出:
[1] 1 2 4 5 6 7 3
所需的输出如下:
[1] 0 0 1 2 3 4 5 0
我想这个解决方案看起来就像是将一个排名函数仅应用于向量(a)的元素,其中(不要)具有值0
答案 0 :(得分:1)
我们可以rank
排除0值的元素,并用新的rank
向量替换向量中相应元素中的值。
a1 <- a
a1[a1!=0] <- rank(a1[a1!=0])
a1
或者我们可以使用replace
一步完成此操作。
replace(a, a!=0, rank(a[a!=0]))