Ranks of Data

Share:

Description

Returns a vector of the (mid-) ranks of the input.

Usage

1
2
mu.rank(x, na.last = TRUE, na.rm=Inf)
mu.rank.nna(x)

Arguments

x

numeric vector. Missing values (NA) are allowed for mu.rank but not for mu.rank.nna

na.last

vector with one element. If TRUE, NAs are put last, if FALSE, NAs are put first, if NA, NAs are handled according to na.rm; "keep" is equivalent to NA and na.rm = F.

na.rm

logical flag, indicating if missing values (NA) should be removed (TRUE) or not (FALSE) in the output. If NA, NAs in x are not allowed and na.last is ignored. The default for na.rm is TRUE if na.last = NA and FALSE else.

Details

mu.rank is faster than rank. The treatment of missing values is controlled by both na.last and na.rm.

Value

the ranks; i.e., the i-th value is the rank of x[i]. In case of ties, average ranks is returned.

Author(s)

Knut M. Wittkowski kmw@rockefeller.edu, Tingting Song ttsong@gmail.com

See Also

rank

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
a <- c(4, 2, 5, 1, 4, NA, 6)
mu.rank(a) # default: na.last=TRUE, na.rm=FALSE
# [1] 3.5 2.0 5.0 1.0 3.5 7.0 6.0
mu.rank(a,na.last=NA) # default: na.rm=TRUE
# [1] 3.5 2.0 5.0 1.0 3.5     6.0
mu.rank(a,na.last=NA,na.rm=FALSE)
#     3.5 2.0 5.0 1.0 3.5  NA 6.0

# Spearman's rank correlation between two sets of testscores 
a <- c(4, 2, 5, 1, 4, NA, 6)
b <- c(4, 2, 5, NA, 4, 5, 6)

cor(a, b, if(is.R()) "complete.obs" else "available") 
# [1] 0.8241688
cor(a, b, if(is.R()) "pairwise.complete.obs" else "omit")
# [1] 1

cor(rank(a), rank(b))
# [1] 0.1651446
cor(mu.rank(a, na.last=NA, na.rm=FALSE),
    mu.rank(b, na.last=NA, na.rm=FALSE), 
    if(is.R()) "complete.obs" else "available")
# [1] 0.8523852 
cor(mu.rank(a, na.last=NA, na.rm=FALSE),
    mu.rank(b, na.last=NA, na.rm=FALSE), 
    if(is.R()) "pairwise.complete.obs" else "omit")
# [1] 0.9953452
cor(rank(a[!is.na(a*b)]), rank(b[!is.na(a*b)]))
# [1] 1