Use this to scavenge a data frame for columns that you want to keep. Select
additional columns through ...
. Do not use this for final column selection;
use dplyr::select()
instead.
ys_prune(data, spec, ..., .report = FALSE)
A data frame with common columns with spec
and ...
, in the order they
appear in spec
.
An error is generated if there are no columns in common between data
and
spec
.
data <- ys_help$data()
spec <- ys_help$spec()
data$STUDY <- NULL
head(ys_prune(data, spec))
#> C NUM ID SUBJ TIME SEQ CMT EVID AMT DV AGE WT CRCL ALB BMI
#> 1 NA 1 1 1 0.00 0 1 1 5 0.000 28.03 55.16 114.45 4.4 21.67
#> 2 NA 2 1 1 0.61 1 2 0 NA 61.005 28.03 55.16 114.45 4.4 21.67
#> 3 NA 3 1 1 1.15 1 2 0 NA 90.976 28.03 55.16 114.45 4.4 21.67
#> 4 NA 4 1 1 1.73 1 2 0 NA 122.210 28.03 55.16 114.45 4.4 21.67
#> 5 NA 5 1 1 2.15 1 2 0 NA 126.090 28.03 55.16 114.45 4.4 21.67
#> 6 NA 6 1 1 3.19 1 2 0 NA 84.682 28.03 55.16 114.45 4.4 21.67
#> AAG SCR AST ALT HT CP TAFD TAD LDOS MDV BLQ PHASE RF
#> 1 106.36 1.14 11.88 12.66 159.55 0 0.00 0.00 5 1 0 1 norm
#> 2 106.36 1.14 11.88 12.66 159.55 0 0.61 0.61 5 0 0 1 norm
#> 3 106.36 1.14 11.88 12.66 159.55 0 1.15 1.15 5 0 0 1 norm
#> 4 106.36 1.14 11.88 12.66 159.55 0 1.73 1.73 5 0 0 1 norm
#> 5 106.36 1.14 11.88 12.66 159.55 0 2.15 2.15 5 0 0 1 norm
#> 6 106.36 1.14 11.88 12.66 159.55 0 3.19 3.19 5 0 0 1 norm
head(ys_prune(data, spec, .report = TRUE))
#> Column not found: STUDY
#> C NUM ID SUBJ TIME SEQ CMT EVID AMT DV AGE WT CRCL ALB BMI
#> 1 NA 1 1 1 0.00 0 1 1 5 0.000 28.03 55.16 114.45 4.4 21.67
#> 2 NA 2 1 1 0.61 1 2 0 NA 61.005 28.03 55.16 114.45 4.4 21.67
#> 3 NA 3 1 1 1.15 1 2 0 NA 90.976 28.03 55.16 114.45 4.4 21.67
#> 4 NA 4 1 1 1.73 1 2 0 NA 122.210 28.03 55.16 114.45 4.4 21.67
#> 5 NA 5 1 1 2.15 1 2 0 NA 126.090 28.03 55.16 114.45 4.4 21.67
#> 6 NA 6 1 1 3.19 1 2 0 NA 84.682 28.03 55.16 114.45 4.4 21.67
#> AAG SCR AST ALT HT CP TAFD TAD LDOS MDV BLQ PHASE RF
#> 1 106.36 1.14 11.88 12.66 159.55 0 0.00 0.00 5 1 0 1 norm
#> 2 106.36 1.14 11.88 12.66 159.55 0 0.61 0.61 5 0 0 1 norm
#> 3 106.36 1.14 11.88 12.66 159.55 0 1.15 1.15 5 0 0 1 norm
#> 4 106.36 1.14 11.88 12.66 159.55 0 1.73 1.73 5 0 0 1 norm
#> 5 106.36 1.14 11.88 12.66 159.55 0 2.15 2.15 5 0 0 1 norm
#> 6 106.36 1.14 11.88 12.66 159.55 0 3.19 3.19 5 0 0 1 norm
data$FOO <- 1
data$BAR <- 2
data$YAK <- 3
head(ys_prune(data, spec, YAK, FOO))
#> C NUM ID SUBJ TIME SEQ CMT EVID AMT DV AGE WT CRCL ALB BMI
#> 1 NA 1 1 1 0.00 0 1 1 5 0.000 28.03 55.16 114.45 4.4 21.67
#> 2 NA 2 1 1 0.61 1 2 0 NA 61.005 28.03 55.16 114.45 4.4 21.67
#> 3 NA 3 1 1 1.15 1 2 0 NA 90.976 28.03 55.16 114.45 4.4 21.67
#> 4 NA 4 1 1 1.73 1 2 0 NA 122.210 28.03 55.16 114.45 4.4 21.67
#> 5 NA 5 1 1 2.15 1 2 0 NA 126.090 28.03 55.16 114.45 4.4 21.67
#> 6 NA 6 1 1 3.19 1 2 0 NA 84.682 28.03 55.16 114.45 4.4 21.67
#> AAG SCR AST ALT HT CP TAFD TAD LDOS MDV BLQ PHASE RF YAK FOO
#> 1 106.36 1.14 11.88 12.66 159.55 0 0.00 0.00 5 1 0 1 norm 3 1
#> 2 106.36 1.14 11.88 12.66 159.55 0 0.61 0.61 5 0 0 1 norm 3 1
#> 3 106.36 1.14 11.88 12.66 159.55 0 1.15 1.15 5 0 0 1 norm 3 1
#> 4 106.36 1.14 11.88 12.66 159.55 0 1.73 1.73 5 0 0 1 norm 3 1
#> 5 106.36 1.14 11.88 12.66 159.55 0 2.15 2.15 5 0 0 1 norm 3 1
#> 6 106.36 1.14 11.88 12.66 159.55 0 3.19 3.19 5 0 0 1 norm 3 1
# Use this for final subsetting
# It will fail if all the columns aren't there
data <- ys_help$data()
head(dplyr::select(data, names(spec)))
#> C NUM ID SUBJ TIME SEQ CMT EVID AMT DV AGE WT CRCL ALB BMI
#> 1 NA 1 1 1 0.00 0 1 1 5 0.000 28.03 55.16 114.45 4.4 21.67
#> 2 NA 2 1 1 0.61 1 2 0 NA 61.005 28.03 55.16 114.45 4.4 21.67
#> 3 NA 3 1 1 1.15 1 2 0 NA 90.976 28.03 55.16 114.45 4.4 21.67
#> 4 NA 4 1 1 1.73 1 2 0 NA 122.210 28.03 55.16 114.45 4.4 21.67
#> 5 NA 5 1 1 2.15 1 2 0 NA 126.090 28.03 55.16 114.45 4.4 21.67
#> 6 NA 6 1 1 3.19 1 2 0 NA 84.682 28.03 55.16 114.45 4.4 21.67
#> AAG SCR AST ALT HT CP TAFD TAD LDOS MDV BLQ PHASE STUDY RF
#> 1 106.36 1.14 11.88 12.66 159.55 0 0.00 0.00 5 1 0 1 1 norm
#> 2 106.36 1.14 11.88 12.66 159.55 0 0.61 0.61 5 0 0 1 1 norm
#> 3 106.36 1.14 11.88 12.66 159.55 0 1.15 1.15 5 0 0 1 1 norm
#> 4 106.36 1.14 11.88 12.66 159.55 0 1.73 1.73 5 0 0 1 1 norm
#> 5 106.36 1.14 11.88 12.66 159.55 0 2.15 2.15 5 0 0 1 1 norm
#> 6 106.36 1.14 11.88 12.66 159.55 0 3.19 3.19 5 0 0 1 1 norm