This function provides an automated method to extract covariate-like columns. The user decides which columns these variables cannot vary within. So if you have repeated measures for each ID, this function can find the columns that are constant within ID and their unique values for each ID. Or, you can provide a combination of id.cols, say ID and STUDY, and get variables that do not vary within unique combinations of these.

findCovs(data, by = NULL, cols.id, as.fun = NULL)

Arguments

data

data.frame in which to look for covariates

by

covariates will be searched for in combinations of values in these columns. Often by will be either empty or ID. But it can also be both say c("ID","DRUG") or c("ID","TRT").

cols.id

Deprecated. Use by instead.

as.fun

The default is to return a data.table if data is a data.table and return a data.frame in all other cases. Pass a function in as.fun to convert to something else. If data is not a data.table, the default can be configured using NMdataConf.

Value

a data set with one observation per combination of values of variables listed in by.

See also

Examples

dt1=data.frame(ID=c(1,1,2,2),
               OCC=c(1,2,1,2),
               ## ID level
               eta1=c(1,1,3,3),
               ## occasion level
               eta2=c(1,3,1,5),
               ## not used
               eta3=0
               )
## model level
findCovs(dt1)
#>   eta3
#> 1    0
## ID level
findCovs(dt1,"ID")
#>   ID eta1 eta3
#> 1  1    1    0
#> 2  2    3    0
## acual ID level
findVars(findCovs(dt1,"ID"))
#>   ID eta1
#> 1  1    1
#> 2  2    3
## occasion level
findCovs(findVars(dt1,"ID"),c("ID","OCC"))
#>   ID OCC eta2
#> 1  1   1    1
#> 2  1   2    3
#> 3  2   1    1
#> 4  2   2    5
## Based on a "real data example"
if (FALSE) {
dat <- NMscanData(system.file("examples/nonmem/xgxr001.lst", package = "NMdata"))
findCovs(dat,by="ID")
### Without an ID column we get non-varying columns
findCovs(dat)
}