秩函数将0排名为0,将函数应用于具有特定值的向量元素?

时间:2015-10-12 10:29:32

标签: r rank

我想用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

1 个答案:

答案 0 :(得分:1)

我们可以rank排除0值的元素,并用新的rank向量替换向量中相应元素中的值。

 a1 <- a
 a1[a1!=0] <- rank(a1[a1!=0])
 a1

或者我们可以使用replace一步完成此操作。

replace(a, a!=0, rank(a[a!=0]))