-
Notifications
You must be signed in to change notification settings - Fork 2
/
extractDataOld.R
57 lines (49 loc) · 3.33 KB
/
extractDataOld.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
#### extractData
#############################################################################
#' Extract Data while merging linking errors.
#'
#' Support for linking error data bases has been removed from \code{eatGADS}.
#' \code{extractDataOld} provides (for the time being) backwards compatibility, so linking errors can still be merged automatically.
#'
#' See \code{\link{extractData}} for the current functionality.
#'
#'@param GADSdat A \code{GADSdat} object.
#'@param convertMiss Should values coded as missing values be recoded to \code{NA}?
#'@param convertLabels If \code{"numeric"}, values remain as numerics. If \code{"factor"} or \code{"character"}, values are recoded to their labels. Corresponding variable type is applied.
#'@param dropPartialLabels Should value labels for partially labeled variables be dropped? If \code{TRUE}, the partial labels will be dropped. If \code{FALSE}, the variable will be converted to the class specified in \code{convertLabels}.
#'@param convertVariables Character vector of variables names, which labels should be applied to. If not specified (default), value labels are applied to all variables for which labels are available. Variable names not in the actual GADS are silently dropped.
#'
#'@return Returns a data frame.
#'
#'
#'@export
extractDataOld <- function(GADSdat, convertMiss = TRUE, convertLabels = "character", dropPartialLabels = TRUE, convertVariables = NULL) {
UseMethod("extractDataOld")
}
#'@export
extractDataOld.GADSdat <- function(GADSdat, convertMiss = TRUE, convertLabels = "character", dropPartialLabels = TRUE, convertVariables = NULL) {
stop("extractDataOld() is only implemented for backwards compatability of 'trend_GADSdat' objects. Please use extractData() for 'GADSdat' objects.")
}
#'@export
extractDataOld.trend_GADSdat <- function(GADSdat, convertMiss = TRUE, convertLabels = "character", dropPartialLabels = TRUE, convertVariables = NULL) {
names_no_LEs <- names(GADSdat$datList)[names(GADSdat$datList) != "LEs"]
if(length(names_no_LEs) > 2) stop("extractDataOld() is only implemented for backwards compatability of 'trend_GADSdat' with data from two data bases. For 'trend_GADSdat' objects with data from more than two data bases use extractData() instead.")
check_trend_GADSdat(GADSdat)
all_dat <- extract_data_only(GADSdat = GADSdat, convertMiss = convertMiss, convertLabels = convertLabels,
dropPartialLabels = dropPartialLabels, convertVariables = convertVariables)
## if available, merge also linking errors; merge picks by automatically, keep variable order as in original data frames
if(!is.null(GADSdat$datList[["LEs"]])) {
gads_le <- extractGADSdat(all_GADSdat = GADSdat, name = "LEs")
le <- extractData(gads_le, convertMiss = convertMiss, convertLabels = "character")
# performance relevant: merge (data.table seems to be fastest)
all_dat <- data.table::setDT(all_dat)
le <- data.table::setDT(le)
all_dat_withLEs <- merge(all_dat, le)
all_dat_withLEs <- as.data.frame(all_dat_withLEs)
all_dat <- all_dat_withLEs[, c(names(all_dat), setdiff(names(le), names(all_dat)))]
}
all_dat <- all_dat[, c(names(all_dat)[names(all_dat) != "year"], "year")]
# remove attributes (varLabels) (extractData has been changed)
all_dat <- all_dat[seq(nrow(all_dat)), ]
all_dat
}