# Cargar librerías
library(agricolae)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.1     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.3     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# 1. Definir los tratamientos y generar el diseño DCA
trt <- c("Riego_50%", "Riego_75%", "Riego_100%", "Riego_125%")
trt
## [1] "Riego_50%"  "Riego_75%"  "Riego_100%" "Riego_125%"
# design.crd genera automáticamente la aleatorización y el croquis
# r = 4 indica las réplicas, seed asegura reproducibilidad
diseno_dca <- design.crd(trt, r = 4, serie = 2, seed = 123)
diseno_dca
## $parameters
## $parameters$design
## [1] "crd"
## 
## $parameters$trt
## [1] "Riego_50%"  "Riego_75%"  "Riego_100%" "Riego_125%"
## 
## $parameters$r
## [1] 4 4 4 4
## 
## $parameters$serie
## [1] 2
## 
## $parameters$seed
## [1] 123
## 
## $parameters$kinds
## [1] "Super-Duper"
## 
## $parameters[[7]]
## [1] TRUE
## 
## 
## $book
##    plots r        trt
## 1    101 1  Riego_75%
## 2    102 1  Riego_50%
## 3    103 1 Riego_125%
## 4    104 1 Riego_100%
## 5    105 2 Riego_100%
## 6    106 2 Riego_125%
## 7    107 3 Riego_100%
## 8    108 3 Riego_125%
## 9    109 2  Riego_50%
## 10   110 3  Riego_50%
## 11   111 4  Riego_50%
## 12   112 2  Riego_75%
## 13   113 3  Riego_75%
## 14   114 4 Riego_125%
## 15   115 4  Riego_75%
## 16   116 4 Riego_100%
# 2. Extraer la planilla de campo generada por agricolae
planilla_r <- diseno_dca$book

# 3. Preparar la estructura para easyanova (Tratamiento como factor)
planilla_final <- planilla_r %>%
  select(plots, trt) %>%
  rename(Parcela = plots, Tratamiento = trt) %>%
  mutate(
    Tratamiento = as.factor(Tratamiento), # ¡Clave para easyanova!
    Eficiencia_Agua = NA # Columna para los datos de campo
  )

# Mostrar la tabla lista para imprimir
print(planilla_final)
##    Parcela Tratamiento Eficiencia_Agua
## 1      101   Riego_75%              NA
## 2      102   Riego_50%              NA
## 3      103  Riego_125%              NA
## 4      104  Riego_100%              NA
## 5      105  Riego_100%              NA
## 6      106  Riego_125%              NA
## 7      107  Riego_100%              NA
## 8      108  Riego_125%              NA
## 9      109   Riego_50%              NA
## 10     110   Riego_50%              NA
## 11     111   Riego_50%              NA
## 12     112   Riego_75%              NA
## 13     113   Riego_75%              NA
## 14     114  Riego_125%              NA
## 15     115   Riego_75%              NA
## 16     116  Riego_100%              NA

Explicación Técnica y Conceptual del Código R

1. Carga del Ecosistema de Librerías

library(agricolae)

  • En R: Carga en el entorno de trabajo el paquete agricolae, una biblioteca especializada en procedimientos estadísticos, diseños y análisis para investigación agrícola y experimental.
  • En Diseño Experimental: Proporciona los algoritmos estándar para generar la aleatorización de diseños experimentales clásicos (DCA, DBCA, DCL, Parcelas Divididas), calcular el croquis de campo y ejecutar pruebas de comparación de medias.

library(tidyverse)

  • En R: Importa una colección de paquetes fundamentales (dplyr, tibble, magrittr, entre otros) para la manipulación y transformación de estructuras de datos mediante el operador de tubería (pipe %>%).
  • En Diseño Experimental: Permite estructurar la base de datos experimental bajo el principio de datos limpios (tidy data), donde cada fila representa una unidad experimental única y cada columna representa un factor o una variable de respuesta.

2. Definición de Factores y Generación del Diseño

trt <- c("Riego_50%", "Riego_75%", "Riego_100%", "Riego_125%")

  • En R: Crea un vector atómico de tipo texto (character) con cuatro elementos que contienen las etiquetas de los niveles a evaluar.
  • En Diseño Experimental: Define formalmente los niveles del Factor Principal (Régimen de Riego como variable independiente). Se establece un diseño unifactorial con \(t = 4\) tratamientos.

diseno_dca <- design.crd(trt, r = 4, serie = 2, seed = 123)

  • En R: Ejecuta la función design.crd() (Completely Randomized Design). Recibe el vector trt, fija 4 repeticiones con el argumento \(r = 4\), asigna códigos de parcelas de dos dígitos iniciando en centenas (serie = 2), y fija la semilla del generador pseudoaleatorio (seed = 123). Devuelve un objeto de tipo lista con metadatos, croquis y libro de campo.
  • En Diseño Experimental: Implementa el Diseño Completamente al Azar (DCA) bajo el supuesto de que las unidades experimentales son homogéneas. Integra los tres principios del diseño:
  • Repetición: Asigna \(r = 4\) réplicas por tratamiento, generando un tamaño de muestra de \(N = t \times r = 16\) unidades experimentales y asegurando \(12\) grados de libertad para el error experimental (\(GL_{E} = N - t = 16 - 4\)).
  • Aleatorización: Distribuye de forma irrestricta y probabilística los 4 tratamientos en las 16 parcelas para evitar sesgos sistemáticos.
  • Reproducibilidad: La semilla fija garantiza que la distribución aleatoria de las parcelas sea idéntica cada vez que se ejecute el código.

3. Extracción del Cuaderno de Campo

planilla_r <- diseno_dca$book

  • En R: Utiliza el operador de indexación $ para extraer el data frame denominado book, almacenado dentro de la lista generada por agricolae.
  • En Diseño Experimental: Obtiene la Planilla o Libro de Campo (field book), que contiene la asignación física y espacializada de qué tratamiento le corresponde a cada unidad experimental numerada.

4. Transformación y Preparación de la Matriz de Datos

planilla_final <- planilla_r %>%

  • En R: Asigna el resultado de las transformaciones a una nueva variable (planilla_final) e inicia la secuencia de operaciones canalizadas mediante el pipe %>%.
  • En Diseño Experimental: Prepara la matriz de recolección para que cumpla con el estándar requerido por paquetes de análisis de varianza como easyanova.

select(plots, trt) %>%

  • En R: Filtra las columnas del data frame, conservando únicamente plots (número de parcela) y trt (tratamiento asignado), descartando columnas auxiliares de orden.
  • En Diseño Experimental: Aísla las dos dimensiones operativas esenciales para el levantamiento de información: el identificador de la Unidad Experimental y el Tratamiento aplicado.

rename(Parcela = plots, Tratamiento = trt) %>%

  • En R: Cambia el nombre de las variables de su nomenclatura en inglés por defecto a identificadores descriptivos en español.
  • En Diseño Experimental: Facilita la legibilidad agronómica y la trazabilidad de los datos en el campo.

mutate(Tratamiento = as.factor(Tratamiento), Eficiencia_Agua = NA)

  • En R: Crea o modifica columnas:

  • Convierte la columna Tratamiento de vector de texto a tipo factor categórico.

  • Agrega la columna Eficiencia_Agua inicializada con valores vacíos (NA).

  • En Diseño Experimental:

  • Factorización: Es indispensable para que los modelos lineales y las rutinas ANOVA reconozcan la variable como cualitativa/clasificatoria y calculen correctamente las sumas de cuadrados entre tratamientos.

  • Variable de Respuesta: Crea el espacio para registrar la variable dependiente cuantitativa continua (\(Y_{ij}\)) que será medida directamente en las unidades experimentales.


5. Visualización del Formato de Registro

print(planilla_final)

  • En R: Muestra en la consola o renderiza en el informe RMarkdown la estructura tabular final.
  • En Diseño Experimental: Genera la matriz final lista para ser exportada o impresa, permitiendo a los evaluadores de campo registrar las observaciones experimentales sin alterar el orden aleatorio establecido.