These functions weight the variable x by a specific vector of weights.

weight(x, weights, digits = 0)

weight2(x, weights)

Arguments

x

(Unweighted) variable.

weights

Vector with same length as x, which contains weight factors. Each value of x has a specific assigned weight in weights.

digits

Numeric value indicating the number of decimal places to be used for rounding the weighted values. By default, this value is 0, i.e. the returned values are integer values.

Value

The weighted x.

Details

weight2() sums up all weights values of the associated categories of x, whereas weight() uses a xtabs formula to weight cases. Thus, weight() may return a vector of different length than x.

Note

The values of the returned vector are in sorted order, whereas the values' order of the original x may be spread randomly. Hence, x can't be used, for instance, for further cross tabulation. In case you want to have weighted contingency tables or (grouped) box plots etc., use the weightBy argument of most functions.

Examples

v <- sample(1:4, 20, TRUE)
table(v)
#> v
#> 1 2 3 4 
#> 3 6 5 6 
w <- abs(rnorm(20))
table(weight(v, w))
#> 
#> 1 2 3 4 
#> 2 5 5 3 
table(weight2(v, w))
#> 
#> 1 2 3 4 
#> 2 5 5 3 

set.seed(1)
x <- sample(letters[1:5], size = 20, replace = TRUE)
w <- runif(n = 20)

table(x)
#> x
#> a b c d e 
#> 6 4 3 1 6 
table(weight(x, w))
#> 
#> a b c e 
#> 3 3 2 3