keyApply.RdThis is the main objective of the variable key system.
keyApply(
dframe,
key,
diagnostic = TRUE,
safeNumericToInteger = TRUE,
trimws = "both",
ignoreCase = TRUE,
drop = TRUE,
debug = FALSE
)An R data frame
A variable key object, of class either "key" or "keylong"
Default TRUE: Compare the old and new data frames carefully with the keyDiagnostic function.
Default TRUE: Should we treat values
which appear to be integers as integers? If a column is
numeric, it might be safe to treat it as an integer. In many
csv data sets, the values coded c(1, 2, 3) are really
integers, not floats c(1.0, 2.0, 3.0). See safeInteger.
Default is "both", can change to "left", "right", or set as NULL to avoid any trimming.
Default TRUE. If column name is capitalized differently than name_old in the key, but the two are otherwise identical, then the difference in capitalization will be ignored.
Default TRUE. True implies drop = c("vars", "vals"). TRUE applies to both variables ("vars") and values ("vals"). "vars" means that a column will be omitted from data if it is not in the key "name_old". Similarly, if anything except "." appears in value_old, then setting drop="vals" means omission of a value from key "value_old" causes observations with those values to become NA. This is the original variable key behavior. The drop argument allows "partial keys", beginning with kutils version 1.12. drop = FALSE means that neither values nor variables are omitted. Rather than TRUE, one can specify either drop = "vars", or drop = "vals".
Default FALSE. If TRUE, emit some warnings.
A new data.frame object, with renamed and recoded variables
mydf.key.path <- system.file("extdata", "mydf.key.csv", package = "kutils")
mydf.key <- keyImport(mydf.key.path)
#> keyImport guessed that is a wide format key.
mydf.path <- system.file("extdata", "mydf.csv", package = "kutils")
mydf <- read.csv(mydf.path, stringsAsFactors = FALSE)
mydf2 <- keyApply(mydf, mydf.key)
#> [1] "Variable x5 has 20 unique values. Too large for a table."
#> x4 (old var)
#> x4 0 1 2 3 4 5 6 7 11 999
#> 0 10 0 0 0 0 0 0 0 0 0
#> 1 0 30 0 0 0 0 0 0 0 0
#> 2 0 0 46 0 0 0 0 0 0 0
#> 3 0 0 0 40 0 0 0 0 0 0
#> 4 0 0 0 0 33 0 0 0 0 0
#> 5 0 0 0 0 0 21 0 0 0 0
#> 6 0 0 0 0 0 0 5 0 0 0
#> 7 0 0 0 0 0 0 0 4 0 0
#> 11 0 0 0 0 0 0 0 0 1 0
#> <NA> 0 0 0 0 0 0 0 0 0 10
#> x3 (old var)
#> x3 hi lo med
#> lo 0 64 0
#> mid 74 0 62
#> x2 (old var)
#> x2 a b c d f
#> f 0 0 0 0 31
#> d 0 0 0 36 0
#> c 0 0 51 0 0
#> b 0 41 0 0 0
#> a 41 0 0 0 0
#> x1 (old var)
#> x1 bobby cindy greg marcia peter
#> Cindy 0 34 0 0 0
#> Bobby 43 0 0 0 0
#> Peter 0 0 0 0 42
#> Marcia 0 0 0 51 0
#> Greg 0 0 30 0 0
#> x7 (old var)
#> x7 a b c d f
#> fail 0 0 0 43 48
#> pass 36 40 33 0 0
#> x6 (old var)
#> x6 1 2 3 4 5
#> F 44 0 0 0 0
#> D 0 41 0 0 0
#> C 0 0 34 0 0
#> B 0 0 0 45 0
#> A 0 0 0 0 36
nls.keylong.path <- system.file("extdata", "natlongsurv.key_long.csv", package = "kutils")
nls.keylong <- keyImport(nls.keylong.path, long = TRUE)
data(natlongsurv)
nls.dat <- keyApply(natlongsurv, nls.keylong)
#> [1] "Variable id has 20 unique values. Too large for a table."
#> R0003300 (old var)
#> marital 1 2 3 4 5 6
#> Married 841 0 0 0 0 0
#> Married (sp absent) 0 60 0 0 0 0
#> Widowed 0 0 1 0 0 0
#> Divorced 0 0 0 27 0 0
#> Separated 0 0 0 0 33 0
#> Never Married 0 0 0 0 0 1905
#> R0005700 (old var)
#> schoolstopage -4 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#> 8 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 10 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 11 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 12 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0
#> 13 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0
#> 14 0 0 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0
#> 15 0 0 0 0 0 0 0 71 0 0 0 0 0 0 0 0 0
#> 16 0 0 0 0 0 0 0 0 144 0 0 0 0 0 0 0 0
#> 17 0 0 0 0 0 0 0 0 0 374 0 0 0 0 0 0 0
#> 18 0 0 0 0 0 0 0 0 0 0 383 0 0 0 0 0 0
#> 19 0 0 0 0 0 0 0 0 0 0 0 141 0 0 0 0 0
#> 20 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0
#> 21 0 0 0 0 0 0 0 0 0 0 0 0 0 72 0 0 0
#> 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 0 0
#> 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 0
#> 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4
#> <NA> 1515 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> [1] "Variable iq has 20 unique values. Too large for a table."
#> R1051600 (old var)
#> schoollastgrade85 -5 -4 9 10 11 12 13 14 15 16 17 18
#> 9 0 0 3 0 0 0 0 0 0 0 0 0
#> 10 0 0 0 1 0 0 0 0 0 0 0 0
#> 11 0 0 0 0 8 0 0 0 0 0 0 0
#> 12 0 0 0 0 0 45 0 0 0 0 0 0
#> 13 0 0 0 0 0 0 26 0 0 0 0 0
#> 14 0 0 0 0 0 0 0 30 0 0 0 0
#> 15 0 0 0 0 0 0 0 0 7 0 0 0
#> 16 0 0 0 0 0 0 0 0 0 45 0 0
#> 17 0 0 0 0 0 0 0 0 0 0 13 0
#> 18 0 0 0 0 0 0 0 0 0 0 0 37
#> <NA> 148 2504 0 0 0 0 0 0 0 0 0 0
#> R1302000 (old var)
#> smoke91 -5 -4 0 1
#> NA 232 13 0 0
#> No 0 0 1994 0
#> Yes 0 0 0 628
#> [1] "Variable smokenum91 has 20 unique values. Too large for a table."
#> [1] "Variable alchdays91 has 20 unique values. Too large for a table."
#> R6235600 (old var)
#> schoollastgrade01 -5 0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#> 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 4 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 5 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 6 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0
#> 7 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0
#> 8 0 0 0 0 0 0 0 0 38 0 0 0 0 0 0 0 0 0 0
#> 9 0 0 0 0 0 0 0 0 0 52 0 0 0 0 0 0 0 0 0
#> 10 0 0 0 0 0 0 0 0 0 0 73 0 0 0 0 0 0 0 0
#> 11 0 0 0 0 0 0 0 0 0 0 0 113 0 0 0 0 0 0 0
#> 12 0 0 0 0 0 0 0 0 0 0 0 0 893 0 0 0 0 0 0
#> 13 0 0 0 0 0 0 0 0 0 0 0 0 0 214 0 0 0 0 0
#> 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0
#> 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 122 0 0 0
#> 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 314 0 0
#> 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 136 0
#> 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 279
#> <NA> 351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> R6502300 (old var)
#> residence -4 1 3 14
#> NA 2856 0 0 0
#> Home 0 4 0 0
#> Hotel 0 0 1 0
#> Other 0 0 0 6
#> R6513700 (old var)
#> age -5 48 49 50 51 52 53 54 55 56 57 58 59 60 61 77 80
#> 48 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 49 0 0 71 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 50 0 0 0 332 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 51 0 0 0 0 329 0 0 0 0 0 0 0 0 0 0 0 0
#> 52 0 0 0 0 0 277 0 0 0 0 0 0 0 0 0 0 0
#> 53 0 0 0 0 0 0 287 0 0 0 0 0 0 0 0 0 0
#> 54 0 0 0 0 0 0 0 281 0 0 0 0 0 0 0 0 0
#> 55 0 0 0 0 0 0 0 0 266 0 0 0 0 0 0 0 0
#> 56 0 0 0 0 0 0 0 0 0 269 0 0 0 0 0 0 0
#> 57 0 0 0 0 0 0 0 0 0 0 213 0 0 0 0 0 0
#> 58 0 0 0 0 0 0 0 0 0 0 0 224 0 0 0 0 0
#> 59 0 0 0 0 0 0 0 0 0 0 0 0 197 0 0 0 0
#> 60 0 0 0 0 0 0 0 0 0 0 0 0 0 105 0 0 0
#> 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0
#> 77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
#> 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
#> <NA> 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> R6516200 (old var)
#> martial03 -5 1 3 4 5 6
#> NA 0 0 0 0 0 0
#> Married 0 1729 0 0 0 0
#> Widowed 0 0 157 0 0 0
#> Divorced 0 0 0 602 0 0
#> Separated 0 0 0 0 106 0
#> Never Married 0 0 0 0 0 265
#> <NA> 8 0 0 0 0 0
#> R6520300 (old var)
#> schoolhusbandgrade -5 -4 -2 -1 1 2 3 4 5 6 7 8 9 10 11
#> -5 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> <NA> 0 1178 22 35 80 49 38 509 108 191 57 291 42 242 17
#> R6520300 (old var)
#> R6520300 -5 -4 -2 -1 1 2 3 4 5 6 7 8 9 10 11
#> NA 0 1178 22 35 0 0 0 0 0 0 0 0 0 0 0
#> 9th 0 0 0 0 80 0 0 0 0 0 0 0 0 0 0
#> 10th 0 0 0 0 0 49 0 0 0 0 0 0 0 0 0
#> 11th 0 0 0 0 0 0 38 0 0 0 0 0 0 0 0
#> 12th 0 0 0 0 0 0 0 509 0 0 0 0 0 0 0
#> 1yr College 0 0 0 0 0 0 0 0 108 0 0 0 0 0 0
#> 2yr College 0 0 0 0 0 0 0 0 0 191 0 0 0 0 0
#> 3yr College 0 0 0 0 0 0 0 0 0 0 57 0 0 0 0
#> 4yr College 0 0 0 0 0 0 0 0 0 0 0 291 0 0 0
#> 5yr College 0 0 0 0 0 0 0 0 0 0 0 0 42 0 0
#> 6yr College 0 0 0 0 0 0 0 0 0 0 0 0 0 242 0
#> Nondegree 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17
#> <NA> 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> R6553600 (old var)
#> schoolpartnergrade -5 -4 -2 -1 4 5 6 7 8 11
#> NA 0 0 0 0 0 0 0 0 0 0
#> 12th 0 0 0 0 12 0 0 0 0 0
#> 1yr College 0 0 0 0 0 1 0 0 0 0
#> 2yr College 0 0 0 0 0 0 2 0 0 0
#> 4yr College 0 0 0 0 0 0 0 1 2 0
#> Nondegree 0 0 0 0 0 0 0 0 0 1
#> <NA> 8 2837 2 1 0 0 0 0 0 0
#> R7289200 (old var)
#> smoke03 -5 -4 -2 -1 0 1
#> NA 0 0 0 0 0 0
#> No 0 0 0 0 2288 0
#> Yes 0 0 0 0 0 492
#> <NA> 8 44 3 32 0 0
#> R7289400 (old var)
#> alcohol03 -5 -4 -2 0 1
#> NA 0 0 0 0 0
#> No 0 0 0 386 0
#> Yes 0 0 0 0 1096
#> <NA> 8 1374 3 0 0
#> [1] "Variable cesd_irt_score has 20 unique values. Too large for a table."
#> [1] "Variable income03 has 20 unique values. Too large for a table."
#> R7329900 (old var)
#> incomehappy03 -5 -4 -2 -1 1 2 3 4 5 6 7
#> NA 0 0 0 0 0 0 0 0 0 0 0
#> Extremely Happy 0 0 0 0 316 0 0 0 0 0 0
#> Very Happy 0 0 0 0 0 747 0 0 0 0 0
#> Somewhat Happy 0 0 0 0 0 0 853 0 0 0 0
#> Neither Happy nor Unhappy 0 0 0 0 0 0 0 352 0 0 0
#> Somewhat Unhappy 0 0 0 0 0 0 0 0 260 0 0
#> Very Unhappy 0 0 0 0 0 0 0 0 0 100 0
#> Extremely Unhappy 0 0 0 0 0 0 0 0 0 0 100
#> <NA> 8 78 14 39 0 0 0 0 0 0 0
#> [1] "Variable incomeneed03 has 20 unique values. Too large for a table."
#> R7337600 (old var)
#> school2yrcoll -5 -4 0 1
#> NA 0 0 0 0
#> No 0 0 14 0
#> Yes 0 0 0 114
#> <NA> 8 2731 0 0
#> R7344600 (old var)
#> feelings03 -5 -4 -2 -1 1 2 3 4
#> NA 0 0 0 0 0 0 0 0
#> Very Happy 0 0 0 0 1250 0 0 0
#> Somewhat Happy 0 0 0 0 0 1269 0 0
#> Somewhat Unhappy 0 0 0 0 0 0 169 0
#> Very Unhappy 0 0 0 0 0 0 0 57
#> <NA> 8 79 9 26 0 0 0 0
#> R7344700 (old var)
#> volunteer03 -5 -4 -2 -1 0 1
#> NA 0 0 0 0 0 0
#> No 0 0 0 0 1982 0
#> Yes 0 0 0 0 0 765
#> <NA> 8 80 6 26 0 0
#> [1] "Variable stocks03 has 20 unique values. Too large for a table."
#> [1] "Variable bondsprivate03 has 20 unique values. Too large for a table."
#> [1] "Variable bondsgovt03 has 20 unique values. Too large for a table."
#> R7477700 (old var)
#> childrenroster03 -5 -4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 15 18
#> 0 0 0 357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 1 0 0 0 383 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 2 0 0 0 0 761 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 3 0 0 0 0 0 523 0 0 0 0 0 0 0 0 0 0 0 0
#> 4 0 0 0 0 0 0 324 0 0 0 0 0 0 0 0 0 0 0
#> 5 0 0 0 0 0 0 0 174 0 0 0 0 0 0 0 0 0 0
#> 6 0 0 0 0 0 0 0 0 97 0 0 0 0 0 0 0 0 0
#> 7 0 0 0 0 0 0 0 0 0 62 0 0 0 0 0 0 0 0
#> 8 0 0 0 0 0 0 0 0 0 0 36 0 0 0 0 0 0 0
#> 9 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0
#> 10 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0
#> 11 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0
#> 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0
#> 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
#> 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0
#> 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
#> <NA> 8 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> R7477800 (old var)
#> childreneligible03 -5 -4 0 1 2 3 4 5 7
#> 0 0 0 2006 0 0 0 0 0 0
#> 1 0 0 0 555 0 0 0 0 0
#> 2 0 0 0 0 158 0 0 0 0
#> 3 0 0 0 0 0 25 0 0 0
#> 4 0 0 0 0 0 0 6 0 0
#> 5 0 0 0 0 0 0 0 1 0
#> 7 0 0 0 0 0 0 0 0 1
#> <NA> 8 107 0 0 0 0 0 0 0
#> R7610300 (old var)
#> region -5 0 1 9
#> NA 0 0 0 2
#> Non-south 0 1658 0 0
#> South 0 0 1199 0
#> <NA> 8 0 0 0