
aridagri is an R package providing 33 functions for statistical analysis in agricultural research, with a focus on experimental design analysis and agronomic calculations. It is written in base R with no hard dependencies.
# From CRAN
install.packages("aridagri")
# Development version from GitHub
# install.packages("remotes")
remotes::install_github("lalitrolaniya/aridagri")| Function | Design |
|---|---|
anova_crd() |
Completely Randomized Design |
anova_rbd() |
Randomized Block Design |
anova_rbd_pooled() |
Pooled RBD (multi-environment) |
anova_latin() |
Latin Square Design |
anova_factorial() |
Two-Factor Factorial |
anova_factorial_3way() |
Three-Factor Factorial |
anova_spd() |
Split-Plot Design |
anova_spd_ab_main() |
SPD with (A x B) in main plot |
anova_spd_c_main_ab_sub() |
SPD with C main, (A x B) sub |
anova_spd_ab_cd() |
SPD with (A x B) main, (C x D) sub |
anova_spd_pooled() |
Pooled Split-Plot Design |
anova_sspd() |
Split-Split-Plot Design |
anova_sspd_pooled() |
Pooled SSPD |
anova_strip() |
Strip-Plot Design |
anova_augmented() |
Augmented Block Design |
anova_alpha_lattice() |
Alpha Lattice Design |
| Function | Analysis |
|---|---|
stability_analysis() |
7 stability methods with integrated ranking |
thermal_indices() |
GDD, HTU, PTU, HUE |
crop_growth_analysis() |
CGR, RGR, NAR |
harvest_index() |
Harvest index and partitioning |
yield_gap_analysis() |
Yield gap calculations |
economic_indices() |
B:C ratio, net returns |
correlation_analysis() |
Correlation matrix with significance |
pca_analysis() |
Principal Component Analysis |
path_analysis() |
Path coefficient analysis |
sem_analysis() |
Structural Equation Modeling |
nue_calculate() |
Nutrient Use Efficiency indices |
nutrient_response() |
Response curve and economic optimum |
economic_analysis() |
Gross/net return, B:C ratio |
| Function | Purpose |
|---|---|
perform_posthoc() |
Post-hoc comparisons (7 methods) |
check_assumptions() |
Normality, homogeneity, independence, outliers |
arid_plot() |
Base-graphics plots for ANOVA, correlation and stability objects |
export_results() |
Export results to Excel or CSV |
Every function is called with the data frame first, then the column
names as character strings. Set verbose = FALSE to suppress
the printed report and just capture the returned object.
library(aridagri)
## Completely Randomized Design
crd <- data.frame(
treatment = factor(rep(c("T1", "T2", "T3", "T4"), each = 4)),
yield = c(20, 22, 19, 21, 25, 27, 24, 26,
30, 32, 29, 31, 28, 30, 27, 29)
)
res <- anova_crd(crd, response = "yield", treatment = "treatment")
## the returned object holds the table, means and statistics
res$anova_table
res$treatment_means
res$cv
## Randomized Block Design
anova_rbd(data, response = "yield", treatment = "variety", block = "block")
## Two-factor factorial
anova_factorial(data, response = "yield", factor1 = "nitrogen", factor2 = "variety")
## Split-plot design
anova_spd(data, response = "yield",
main_plot = "irrigation", sub_plot = "variety", replication = "rep")There are two equivalent ways to run a post-hoc test.
## Option 1: inline, as part of the ANOVA call
anova_crd(crd, "yield", "treatment", posthoc = "tukey")
## Option 2: standalone, on a fitted aov() model
model <- aov(yield ~ treatment, data = crd)
perform_posthoc(model, crd, response = "yield", treatment = "treatment",
posthoc = "tukey")Valid method names are "lsd", "duncan",
"tukey", "snk", "scheffe",
"dunnett", "bonferroni", or
"all". Dunnett compares every level against the
first factor level as the control; there is no separate
control argument, so order the treatment factor with the
control first if needed.
model <- aov(yield ~ treatment, data = crd)
check_assumptions(model) # Shapiro-Wilk, Bartlett, Durbin-Watson, outliersdata <- expand.grid(
rep = 1:3,
irrigation = c("I1", "I2", "I3"),
variety = c("V1", "V2"),
nitrogen = c("N0", "N40", "N80")
)
data$yield <- rnorm(nrow(data), 1200, 150)
anova_sspd(data,
response = "yield",
main_plot = "irrigation",
sub_plot = "variety",
sub_sub_plot = "nitrogen",
replication = "rep")data <- expand.grid(
variety = paste0("V", 1:10),
location = paste0("L", 1:5),
rep = 1:3
)
data$yield <- rnorm(nrow(data), 1200, 200)
stability_analysis(data,
genotype = "variety",
environment = "location",
replication = "rep",
trait = "yield",
method = "all")df <- data.frame(
yield = rnorm(30, 1200, 150),
pods = rnorm(30, 50, 6),
biomass = rnorm(30, 3500, 400)
)
cor_res <- correlation_analysis(df, method = "pearson")
pca_res <- pca_analysis(df, scale = TRUE)
## arid_plot() draws factor/treatment means for any ANOVA design,
## a heatmap for a correlation object, and a ranking for a stability object
arid_plot(res)
arid_plot(cor_res)export_results(res, "results.xlsx") # Excel (default)
export_results(res, "results.csv", format = "csv") # CSVRolaniya, L.K., Jat, R.L., Punia, M., and Choudhary, R.R. (2026). aridagri:
Comprehensive Statistical Tools for Agricultural Research.
R package version 2.0.4. https://github.com/lalitrolaniya/aridagri
Lalit Kumar Rolaniya (Maintainer) Scientist (Agronomy) ICAR-Indian Institute of Pulses Research, Regional Centre, Bikaner, Rajasthan-334006, India ORCID: 0000-0001-8908-1211
Ram Lal Jat Senior Scientist (Agronomy) ICAR-Indian Institute of Pulses Research, Regional Centre, Bikaner, Rajasthan-334006, India ORCID: 0009-0003-4339-0555
Monika Punia Scientist (Genetics & Plant Breeding) ICAR-Indian Institute of Pulses Research, Regional Centre, Bikaner, Rajasthan-334006, India ORCID: 0009-0002-0294-6767
Raja Ram Choudhary Scientist (Agronomy) ICAR-Indian Institute of Groundnut Research, Regional Research Station, Bikaner, Rajasthan-334006, India
GPL-3
Contributions are welcome. Please submit issues or pull requests on GitHub.