Learn R Programming

miceadds (version 1.5-0)

sumpreserving.rounding: Sum Preserving Rounding

Description

This function implements sum preserving rounding. If the supplied data is a matrix, then the sum of all row entries is preserved.

Usage

sumpreserving.rounding(data, digits=0, preserve=TRUE)

Arguments

data
Vector or data frame
digits
Number of digits to be round
preserve
Should the sum be preserved?

Examples

Run this code
###################################
# Example 1
###################################

# define example data
data <- c( 1455 , 1261 , 1067 , 970 , 582 , 97 )
data <- 100 * data / sum(data) 

( x1 <- round( data ) )
sum(x1)
(x2 <- sumpreserving.rounding( data ) )
sum(x2)

  ##   > ( x1 <- round( data ) )
  ##   [1] 27 23 20 18 11  2
  ##   > sum(x1)
  ##   [1] 101
  ##   > (x2 <- sumpreserving.rounding( data ) )
  ##   [1] 27 23 20 18 10  2
  ##   > sum(x2)
  ##   [1] 100

###################################
# Example 2
###################################

# matrix input
data <- rbind( data , data )
( x1 <- round( data ) )
rowSums(x1)
(x2 <- sumpreserving.rounding( data ) )
rowSums(x2)

###################################
# Example 3
###################################

x2 <- c( 1.4 , 1.4 , 1.2 )
round(x2)
sumpreserving.rounding(x2)
  ##   > round(x2)
  ##   [1] 1 1 1
  ##   > sumpreserving.rounding(x2)
  ##   [1] 1 2 1

Run the code above in your browser using DataLab