Skip to content

Commit

Permalink
Updating of academicImpactSummary
Browse files Browse the repository at this point in the history
  • Loading branch information
dbetebenner committed Oct 20, 2021
2 parents 1b9c27a + 1c2c74b commit cfccc38
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 31 deletions.
4 changes: 2 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: cfaTools
Version: 0.0-1.99
Date: 2021-10-17
Version: 0.0-1.991
Date: 2021-10-19
Title: Center for Assessment Tools for Large Scale Educational Assessment Analysis
Description: Center for Assessment developed Tools for Large Scale Educational Assessment.
Authors@R: c(person(given=c("Damian", "W."), family="Betebenner", email="[email protected]", role=c("aut", "cre")),
Expand Down
81 changes: 59 additions & 22 deletions R/academicImpactSummary.R
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
all_grades=NULL,
sgp_grades=NULL,
aggregation_group="SCHOOL_NUMBER",
years_for_aggregates=NULL) {
years_for_aggregates=NULL,
rtm_adjustment=TRUE) {

ACHIEVEMENT_LEVEL <- ACHIEVEMENT_LEVEL_PRIOR_2YEAR <- CONTENT_AREA <- COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP <- NULL
COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP_ADJ <- COVID_ACADEMIC_IMPACT_GES_MEDIAN_SSS <- COVID_ACADEMIC_IMPACT_GES_MEDIAN_SSS_ADJ <- NULL
Expand All @@ -24,6 +25,7 @@
state <- SGP::getStateAbbreviation(tmp.name)
}


### Create sgp_data data set
if (SGP::is.SGP(sgp_data)) sgp_data <- sgp_data@Data
if (!"data.table" %in% class(sgp_data)) stop("Please Provide either and SGP object or LONG data")
Expand Down Expand Up @@ -109,16 +111,16 @@
setkeyv(group_aggregates, shift.key)

group_aggregates[, c("MEDIAN_SGP_PRIOR_1YEAR", "MEDIAN_SGP_PRIOR_2YEAR") := shift(MEDIAN_SGP, 1:2), by = c(eval(aggregation_group), "CONTENT_AREA")]
group_aggregates[, MEDIAN_SGP_BASELINE_PRIOR := shift(MEDIAN_SGP_BASELINE, 1), by = c(eval(aggregation_group), "CONTENT_AREA")] # Only getting this for 2021 (1 year shift = 2 years)
group_aggregates[, MEDIAN_SGP_BASELINE_PRIOR_2YEAR := shift(MEDIAN_SGP_BASELINE, 1), by = c(eval(aggregation_group), "CONTENT_AREA")] # Only getting this for 2021 (1 year shift = 2 years)
group_aggregates[, c("MEAN_SCALE_SCORE_PRIOR_STANDARDIZED", "MEAN_SCALE_SCORE_PRIOR_2YEAR_STANDARDIZED") := shift(MEAN_SCALE_SCORE_STANDARDIZED, 1:2), by = c(eval(aggregation_group), "CONTENT_AREA")]
group_aggregates[, c("MEAN_SCALE_SCORE_PRIOR_PERCENTILE", "MEAN_SCALE_SCORE_PRIOR_2YEAR_PERCENTILE") := shift(MEAN_SCALE_SCORE_PERCENTILE, 1:2), by = c(eval(aggregation_group), "CONTENT_AREA")]
group_aggregates[, c("PERCENT_PROFICIENT_PRIOR", "PERCENT_PROFICIENT_PRIOR_2YEAR") := shift(PERCENT_PROFICIENT, 1:2), by = c(eval(aggregation_group), "CONTENT_AREA")]

# table(group_aggregates[, YEAR, is.na(MEDIAN_SGP_PRIOR_2YEAR)])
# table(group_aggregates[, YEAR, is.na(MEDIAN_SGP_BASELINE_PRIOR)])
# table(group_aggregates[, YEAR, is.na(MEDIAN_SGP_BASELINE_PRIOR_2YEAR)])

if (year_gap!=1) {
group_aggregates[YEAR == current_year, MEDIAN_SGP_PRIOR_2YEAR := MEDIAN_SGP_BASELINE_PRIOR] # Using only BASELINE to BASELINE for 2021
# group_aggregates[YEAR == current_year, MEDIAN_SGP_PRIOR_2YEAR := MEDIAN_SGP_BASELINE_PRIOR_2YEAR] # Using only BASELINE to BASELINE for 2021
group_aggregates[YEAR == current_year, MEDIAN_SGP_PRIOR_2YEAR := MEDIAN_SGP_PRIOR_1YEAR]
group_aggregates[YEAR == current_year, MEDIAN_SGP_PRIOR_1YEAR := NA]
group_aggregates[YEAR == current_year, MEAN_SCALE_SCORE_PRIOR_2YEAR_STANDARDIZED := MEAN_SCALE_SCORE_PRIOR_STANDARDIZED]
Expand All @@ -144,12 +146,17 @@
### Create uncorrected Baseline difference (2021 - 2019)
group_aggregates[, MSGP_BASELINE_DIFFERENCE_UNCORRECTED := MEDIAN_SGP_BASELINE - MEDIAN_SGP_PRIOR_2YEAR]

if (rtm_adjustment) {
### RTM Adjusted MSGP_BASELINE_DIFFERENCE
msgp_rtm_models <- list()

for (CA in content_areas) {
msgp_rtm_models[[CA]] <- MASS::rlm(MSGP_BASELINE_DIFFERENCE_UNCORRECTED ~ 0 + PRIOR_MSGP_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
if (!is.null(aggregation_group)) {
msgp_rtm_models[[CA]] <- MASS::rlm(MSGP_BASELINE_DIFFERENCE_UNCORRECTED ~ 0 + PRIOR_MSGP_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
} else {
msgp_rtm_models[[CA]][["coef"]][["PRIOR_MSGP_CENTERED_2YEAR"]] <- 0
}
}

## Model diagnostics
# par(mfrow = c(2, 2))
# for (CA in content_areas) {
Expand All @@ -164,6 +171,7 @@
for (CA in content_areas) {
group_aggregates[CONTENT_AREA == CA, MSGP_BASELINE_DIFFERENCE_ADJUSTED := MSGP_BASELINE_DIFFERENCE_UNCORRECTED - (PRIOR_MSGP_CENTERED_2YEAR*msgp_rtm_models[[CA]]$coef[["PRIOR_MSGP_CENTERED_2YEAR"]])]
}
} # END rtm_adjustment

## correlation checks
# cor(group_aggregates[, MSGP_BASELINE_DIFFERENCE_UNCORRECTED, MEDIAN_SGP_PRIOR_2YEAR], use='complete.obs')
Expand All @@ -186,6 +194,7 @@
group_aggregates[, COVID_ACADEMIC_IMPACT_SGP_DIFF :=
factor(COVID_ACADEMIC_IMPACT_SGP_DIFF, levels=c("Improvement", "Modest to None", "Moderate", "Large", "Severe"), ordered=TRUE)]

if (rtm_adjustment) {
group_aggregates[, COVID_ACADEMIC_IMPACT_SGP_DIFF_ADJ := fcase(
MSGP_BASELINE_DIFFERENCE_ADJUSTED >= 5, "Improvement",
MSGP_BASELINE_DIFFERENCE_ADJUSTED < 5 & MSGP_BASELINE_DIFFERENCE_ADJUSTED >= -5, "Modest to None",
Expand All @@ -195,7 +204,7 @@

group_aggregates[, COVID_ACADEMIC_IMPACT_SGP_DIFF_ADJ :=
factor(COVID_ACADEMIC_IMPACT_SGP_DIFF_ADJ, levels=c("Improvement", "Modest to None", "Moderate", "Large", "Severe"), ordered=TRUE)]

}
# table(group_aggregates[YEAR==prior_year, COVID_ACADEMIC_IMPACT_SGP_DIFF, CONTENT_AREA], exclude=NULL)
# table(group_aggregates[YEAR==current_year, COVID_ACADEMIC_IMPACT_SGP_DIFF, CONTENT_AREA], exclude=NULL)
# table(group_aggregates[YEAR==prior_year, COVID_ACADEMIC_IMPACT_SGP_DIFF_ADJ, CONTENT_AREA], exclude=NULL)
Expand Down Expand Up @@ -226,12 +235,16 @@
## Merge in GES with other summary statistics
group_aggregates <- ges_sgp[group_aggregates]

if (rtm_adjustment) {
### RTM Adjusted G.E.S.
gessgp_rtm_models <- list()
for (CA in content_areas) {
gessgp_rtm_models[[CA]] <- MASS::rlm(GES_MEDIAN_SGP ~ 0 + PRIOR_MSGP_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
if (!is.null(aggregation_group)) {
gessgp_rtm_models[[CA]] <- MASS::rlm(GES_MEDIAN_SGP ~ 0 + PRIOR_MSGP_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
} else {
gessgp_rtm_models[[CA]][["coef"]][["PRIOR_MSGP_CENTERED_2YEAR"]] <- 0
}
}

## Model diagnostics
# par(mfrow = c(2, 2))
# for (CA in content_areas) {
Expand All @@ -246,6 +259,7 @@
for (CA in content_areas) {
group_aggregates[CONTENT_AREA == CA, GES_MEDIAN_SGP_ADJUSTED := GES_MEDIAN_SGP - (PRIOR_MSGP_CENTERED_2YEAR*gessgp_rtm_models[[CA]]$coef[["PRIOR_MSGP_CENTERED_2YEAR"]])]
}
} # END rtm_adjustment

## Visualization, summary and correlation checks
# na.omit(group_aggregates[, as.list(round(summary(GES_MEDIAN_SGP_ADJUSTED),3)), keyby=c("YEAR", "CONTENT_AREA")])
Expand Down Expand Up @@ -280,6 +294,7 @@
group_aggregates[, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP :=
factor(COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP, levels=c("Improvement", "Modest to None", "Moderate", "Large", "Severe"), ordered=TRUE)]

if (rtm_adjustment) {
group_aggregates[, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP_ADJ := fcase(
GES_MEDIAN_SGP_ADJUSTED >= 0.2, "Improvement",
GES_MEDIAN_SGP_ADJUSTED < 0.2 & GES_MEDIAN_SGP_ADJUSTED >= -0.2, "Modest to None",
Expand All @@ -289,7 +304,7 @@

group_aggregates[, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP_ADJ :=
factor(COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP_ADJ, levels=c("Improvement", "Modest to None", "Moderate", "Large", "Severe"), ordered=TRUE)]

}
# table(group_aggregates[YEAR==prior_year, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP, CONTENT_AREA], exclude=NULL)
# table(group_aggregates[YEAR==current_year, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP, CONTENT_AREA], exclude=NULL)
# table(group_aggregates[YEAR==prior_year, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SGP_ADJ, CONTENT_AREA], exclude=NULL)
Expand All @@ -305,13 +320,23 @@
group_aggregates[, MSSS_DIFFERENCE_UNCORRECTED := MEAN_SCALE_SCORE_STANDARDIZED - MEAN_SCALE_SCORE_PRIOR_2YEAR_STANDARDIZED]
group_aggregates[, MSSP_DIFFERENCE_UNCORRECTED := MEAN_SCALE_SCORE_PERCENTILE - MEAN_SCALE_SCORE_PRIOR_2YEAR_PERCENTILE]

if (rtm_adjustment) {
### RTM Adjusted MSSS_DIFFERENCE
msss_rtm_models <- mssp_rtm_models <- list()

for (CA in content_areas) {
msss_rtm_models[[CA]] <- MASS::rlm(MSSS_DIFFERENCE_UNCORRECTED ~ 0 + PRIOR_MSSS_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
if (!is.null(aggregation_group)) {
msss_rtm_models[[CA]] <- MASS::rlm(MSSS_DIFFERENCE_UNCORRECTED ~ 0 + PRIOR_MSSS_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
} else {
msss_rtm_models[[CA]][["coef"]][["PRIOR_MSSS_CENTERED_2YEAR"]] <- 0
}
}
for (CA in content_areas) {
mssp_rtm_models[[CA]] <- MASS::rlm(MSSP_DIFFERENCE_UNCORRECTED ~ 0 + PRIOR_MSSP_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
if (!is.null(aggregation_group)) {
mssp_rtm_models[[CA]] <- MASS::rlm(MSSP_DIFFERENCE_UNCORRECTED ~ 0 + PRIOR_MSSP_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
} else {
mssp_rtm_models[[CA]][["coef"]][["PRIOR_MSSP_CENTERED_2YEAR"]] <- 0
}
}

## Model diagnostics
Expand All @@ -331,7 +356,7 @@
for (CA in content_areas) {
group_aggregates[CONTENT_AREA == CA, MSSP_DIFFERENCE_ADJUSTED := MSSP_DIFFERENCE_UNCORRECTED - (PRIOR_MSSP_CENTERED_2YEAR*mssp_rtm_models[[CA]]$coef[["PRIOR_MSSP_CENTERED_2YEAR"]])]
}

} # END rtm_adjustment
## correlation checks
# cor(group_aggregates[, MSSS_DIFFERENCE_UNCORRECTED, MEAN_SCALE_SCORE_PRIOR_STANDARDIZED], use='complete.obs')
# cor(group_aggregates[YEAR == prior_year, MSSS_DIFFERENCE_UNCORRECTED, MEAN_SCALE_SCORE_PRIOR_STANDARDIZED], use='complete.obs')
Expand Down Expand Up @@ -363,10 +388,15 @@
## Merge in GES with other summary statistics
group_aggregates <- ges_sss[group_aggregates]

if (rtm_adjustment) {
### RTM Adjusted G.E.S.
gesss_rtm_models <- list()
for (CA in content_areas) {
gesss_rtm_models[[CA]] <- MASS::rlm(GES_MEDIAN_SSS ~ 0 + PRIOR_MSSS_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
if (!is.null(aggregation_group)) {
gesss_rtm_models[[CA]] <- MASS::rlm(GES_MEDIAN_SSS ~ 0 + PRIOR_MSSS_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
} else {
gesss_rtm_models[[CA]][["coef"]][["PRIOR_MSSS_CENTERED_2YEAR"]] <- 0
}
}

## Model diagnostics
Expand All @@ -383,7 +413,7 @@
for (CA in content_areas) {
group_aggregates[CONTENT_AREA == CA, GES_MEDIAN_SSS_ADJUSTED := GES_MEDIAN_SSS - (PRIOR_MSSS_CENTERED_2YEAR*gesss_rtm_models[[CA]]$coef[["PRIOR_MSSS_CENTERED_2YEAR"]])]
}

} # END rtm_adjustment

#####
### Gamma Effect Size (within aggregation_group MSSP 2021 - MSSP 2019)
Expand All @@ -405,10 +435,16 @@
## Merge in GES with other summary statistics
group_aggregates <- ges_ssp[group_aggregates]

if (rtm_adjustment) {
### RTM Adjusted G.E.S.
gessp_rtm_models <- list()

for (CA in content_areas) {
gessp_rtm_models[[CA]] <- MASS::rlm(GES_MEDIAN_SSP ~ 0 + PRIOR_MSSP_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
if (!is.null(aggregation_group)) {
gessp_rtm_models[[CA]] <- MASS::rlm(GES_MEDIAN_SSP ~ 0 + PRIOR_MSSP_CENTERED_2YEAR, data=group_aggregates[YEAR == prior_year & CONTENT_AREA == CA])
} else {
gessp_rtm_models[[CA]][["coef"]][["PRIOR_MSSP_CENTERED_2YEAR"]] <- 0
}
}

## Model diagnostics
Expand All @@ -425,7 +461,7 @@
for (CA in content_areas) {
group_aggregates[CONTENT_AREA == CA, GES_MEDIAN_SSP_ADJUSTED := GES_MEDIAN_SSP - (PRIOR_MSSP_CENTERED_2YEAR*gessp_rtm_models[[CA]]$coef[["PRIOR_MSSP_CENTERED_2YEAR"]])]
}

} # END rtm_adjustment

## Visualization, summary and correlation checks
# na.omit(group_aggregates[, as.list(round(summary(GES_MEDIAN_SSS_ADJUSTED),3)), keyby=c("YEAR", "CONTENT_AREA")])
Expand Down Expand Up @@ -471,6 +507,7 @@
group_aggregates[, COVID_ACADEMIC_IMPACT_SSP_DIFF :=
factor(COVID_ACADEMIC_IMPACT_SSP_DIFF, levels=c("Improvement", "Modest to None", "Moderate", "Large", "Severe"), ordered=TRUE)]

if (rtm_adjustment) {
group_aggregates[, COVID_ACADEMIC_IMPACT_SSS_DIFF_ADJ := fcase(
MSSS_DIFFERENCE_ADJUSTED >= 5, "Improvement",
MSSS_DIFFERENCE_ADJUSTED < 5 & MSSS_DIFFERENCE_ADJUSTED >= -5, "Modest to None",
Expand All @@ -490,6 +527,7 @@

group_aggregates[, COVID_ACADEMIC_IMPACT_SSP_DIFF_ADJ :=
factor(COVID_ACADEMIC_IMPACT_SSP_DIFF_ADJ, levels=c("Improvement", "Modest to None", "Moderate", "Large", "Severe"), ordered=TRUE)]
}

## Create COVID Impact Levels for G.E.S. for 2021 - 2019 Median SGP differences
group_aggregates[, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SSS := fcase(
Expand All @@ -512,6 +550,7 @@
group_aggregates[, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SSS :=
factor(COVID_ACADEMIC_IMPACT_GES_MEDIAN_SSS, levels=c("Improvement", "Modest to None", "Moderate", "Large", "Severe"), ordered=TRUE)]

if (rtm_adjustment) {
group_aggregates[, COVID_ACADEMIC_IMPACT_GES_MEDIAN_SSS_ADJ := fcase(
GES_MEDIAN_SSS_ADJUSTED >= 0.2, "Improvement",
GES_MEDIAN_SSS_ADJUSTED < 0.2 & GES_MEDIAN_SSS_ADJUSTED >= -0.2, "Modest to None",
Expand Down Expand Up @@ -539,12 +578,10 @@
setattr(group_aggregates, "gesss_rtm_models", lapply(gesss_rtm_models, summary))
setattr(group_aggregates, "mssp_rtm_models", lapply(mssp_rtm_models, summary))
setattr(group_aggregates, "gessp_rtm_models", lapply(gessp_rtm_models, summary))
}

tmp.list <- list(TEMP=group_aggregates)
if (is.null(aggregation_group)) {
names(tmp.list) <- "STATE"
} else {
names(tmp.list) <- paste(aggregation_group, collapse="_by_")
}
if (is.null(aggregation_group)) aggregation_group <- "CONTENT_AREA"
names(tmp.list) <- paste(aggregation_group, collapse="_by_")
return(tmp.list)
} ### END academicImpactSummary
6 changes: 6 additions & 0 deletions R/academicImpactSummary_Output.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
`academicImpactSummary_Output` <- function(
academicImpactSummary_Data,
state=NULL,
output_year=NULL) {

} ### END academicImpactSummary_Output
2 changes: 1 addition & 1 deletion R/zzz.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ function(libname, pkgname) {
`.onAttach` <-
function(libname, pkgname) {
if (interactive()) {
packageStartupMessage(magenta$bold('cfaTools',paste(paste0(unlist(strsplit(as.character(packageVersion("cfaTools")), "[.]")), c(".", "-", ".", "")), collapse=""),' (10-17-2021). For help: >help("cfaTools") or visit https://centerforassessment.github.io/cfaTools'))
packageStartupMessage(magenta$bold('cfaTools',paste(paste0(unlist(strsplit(as.character(packageVersion("cfaTools")), "[.]")), c(".", "-", ".", "")), collapse=""),' (10-19-2021). For help: >help("cfaTools") or visit https://centerforassessment.github.io/cfaTools'))
}
}
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ cfaTools
[![R-CMD-check](https://github.com/CenterForAssessment/cfaTools/workflows/R-CMD-check/badge.svg)](https://github.com/CenterForAssessment/cfaTools/actions)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/centerforassessment/cfaTools?branch=master&svg=true)](https://ci.appveyor.com/project/centerforassessment/cfaTools)
[![CRAN_Status_Badge](http:https://www.r-pkg.org/badges/version/cfaTools)](http:https://cran.r-project.org/package=cfaTools)
[![Development Version](https://img.shields.io/badge/devel-0.0--1.99-brightgreen.svg)](https://github.com/CenterForAssessment/cfaTools)
[![Development Version](https://img.shields.io/badge/devel-0.0--1.991-brightgreen.svg)](https://github.com/CenterForAssessment/cfaTools)
[![License](http:https://img.shields.io/badge/license-GPL%203-brightgreen.svg?style=flat)](https://github.com/CenterForAssessment/cfaTools/blob/master/LICENSE.md)


Expand All @@ -27,7 +27,7 @@ To install the latest stable release of **cfaTools** from [CRAN](https://CRAN.R-
To install the development release of **cfaTools** from [GitHub](https://github.com/CenterForAssessment/cfaTools/):

```R
> devtools::install_github("CenterForAssessment/cfaTools")
> remotes::install_github("centerforassessment/cfaTools")
```


Expand Down
7 changes: 5 additions & 2 deletions man/academicImpactSummary.Rd
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ academicImpactSummary(
all_grades=NULL,
sgp_grades=NULL,
aggregation_group="SCHOOL_NUMBER",
years_for_aggregates=NULL)
years_for_aggregates=NULL,
rtm_adjustment=TRUE)
}

\arguments{
Expand All @@ -33,7 +34,9 @@ academicImpactSummary(
}
\item{aggregation_group}{Character string indicating groups to aggregate by and create impact summaries for.
}
\item{years_for_aggregates}{One or both of prior_year and current_year to create aggregates for. Defaults is NULL which gets turned into both prior_year and current_year.
\item{years_for_aggregates}{One or both of prior_year and current_year to create aggregates for. Defaults is NULL which gets turned into both prior_year and current_year.
}
\item{rtm_adjustment}{Logical. Should the regression to the mean adjustments be calculated.
}
}

Expand Down
4 changes: 2 additions & 2 deletions man/cfaTools-package.Rd
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ Center for Assessment developed Tools for Large Scale Educational Assessment.
\tabular{ll}{
Package: \tab cfaTools\cr
Type: \tab Package\cr
Version: \tab 0.0-1.99\cr
Date: \tab 2021-10-17\cr
Version: \tab 0.0-1.991\cr
Date: \tab 2021-10-19\cr
License: \tab GPL-3\cr
LazyLoad: \tab yes\cr
}
Expand Down

0 comments on commit cfccc38

Please sign in to comment.