File: gapMiss.R

package info (click to toggle)
r-cran-vim 6.2.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 1,556 kB
  • sloc: cpp: 141; sh: 12; makefile: 2
file content (30 lines) | stat: -rw-r--r-- 925 bytes parent folder | download | duplicates (2)
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
30
#' Missing value gap statistics
#' 
#' Computes the average missing value gap of a vector. 
#' 
#' The length of each sequence of missing values (gap) in a vector is calculated and the 
#' mean gap is reported
#' 
#' @param x a numeric vector
#' @param what default is the arithmetic mean. 
#' One can include an own function that returns a vector of lenght 1 (e.g. median)
#' @author Matthias Templ based on a suggestion and draft from Huang Tian Yuan.
#' @keywords manip
#' @export
#' @return The gap statistics 
#' @examples
#' v <- rnorm(20)
#' v[3] <- NA
#' v[6:9] <- NA
#' v[13:17] <- NA
#' v
#' gapMiss(v)
#' gapMiss(v, what = median)
#' gapMiss(v, what = function(x) mean(x, trim = 0.1))
#' gapMiss(v, what = var)
gapMiss <- function(x, what = mean){
  if(!is.vector(x)) stop("x must be a vector") 
  if(!any(is.na(x))) return(0)
  stat <- rle(ifelse(is.na(x), 1, 0))
  return(what(stat$lengths[stat$values == 1]))
}