-
Notifications
You must be signed in to change notification settings - Fork 2
/
dummy.R
executable file
·58 lines (51 loc) · 1.54 KB
/
dummy.R
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#' Create Dummy Variables
#'
#'
#' @param x \code{y} variable used to create the dummy
#' variables.
#' @param subset \code{cluster} a subset of the data, if
#' desired.
#' @param reference the reference value for the dummy variables to compare to.
#' @param includeAll logical value indicating whether all of the dummy
#' variables should be returned (including the reference).
#' @return A matrix containing the dummy
#' variables.
#' @examples
#'
#' data(mri)
#'
#' # Create a dummy variable for chd
#' dummy(mri$chd)
#'
#' @export dummy
dummy <- function(x, subset=rep(TRUE,length(x)), reference=sort(unique(x[!is.na(x)])),includeAll=FALSE) {
cl <- match.call()
nm <- deparse(cl[[2]])
reference_name <- reference
if (length(reference)==1) {
reference <- unique(c(reference,sort(unique(x[!is.na(x)]))))
}
X <- NULL
if (includeAll) {
X <- cbind(subset*as.integer(x==reference[1]))
}
for (r in reference[-1]) {
X <- cbind(X, subset*as.integer(x == r))
}
if (includeAll) {
dimnames(X) <- list(NULL,reference)
} else if (length(reference) > 2) {
dimnames(X) <- list(NULL,paste(reference[-1]," vs ",reference[1],sep=""))
} else {
dimnames(X) <- list(NULL,paste("dummy(", nm, ")." ,reference[-1]," vs ",reference[1],sep=""))
}
attr(X,"transformation") <- "dummy"
attr(X,"reference") <- reference
attr(X, "name") <- paste("dummy(", nm, ")", sep="")
attr(X, "prnm") <- nm
attr(X,"original") <- x
attr(X, "groups") <- sort(unique(x))
attr(X, "labels") <- dimnames(X)
attr(X, "reference_name") <- reference_name
X
}