planificar_limpieza() transforma los hallazgos de un objeto perfil en un
objeto de datos editable, sin modificar los datos examinados. Cada fila
representa una acción propuesta. Sólo se marcan como recomendadas las
estrategias correctas con independencia del dominio; algunas, como marcar
valores extremos, permanecen inactivas hasta que se decida actuar. Las
decisiones contextuales quedan desactivadas y los formatos de fecha ambiguos
quedan bloqueados.
Uso
planificar_limpieza(perfil, datos = NULL, soporte_minimo_dependencia = 2L)
aplicar(plan, datos, permitir_eliminacion = FALSE, conservar_eliminados = TRUE)Argumentos
- perfil
Objeto de clase
perfilcreado porperfilar().- datos
data.frame,tibbleodata.tablesobre el que se ejecuta el plan. El objeto recibido no se modifica.- soporte_minimo_dependencia
Cantidad mínima de observaciones concordantes por valor determinante para proponer una imputación.
- plan
Objeto de clase
plan_limpiezao data frame con el mismo contrato. Puede filtrarse y editarse antes de aplicarlo.- permitir_eliminacion
Segundo consentimiento obligatorio para ejecutar acciones que eliminan filas o columnas.
- conservar_eliminados
Si se conservan en el resultado las filas y columnas retiradas. Es
TRUEde forma predeterminada.
Valor
planificar_limpieza() devuelve un data frame de clase
plan_limpieza. aplicar() devuelve una lista de clase
resultado_limpieza con datos, registro, plan_aplicado, el plan
sincronizado y eliminados.
Si una columna de entrada es un factor, las acciones que transforman su
texto devuelven una columna character: no se reconstruyen los niveles
originales, porque una limpieza puede introducir valores nuevos.
Detalles
aplicar() ejecuta exclusivamente las filas con aplicar == TRUE, sobre una
copia de datos. Verifica que cada columna siga siendo identificable y que
las conversiones sean completas antes de sustituirla. Devuelve los datos
nuevos junto con un registro de las acciones y sus parámetros. El mismo
registro queda en el atributo registro_limpieza de los datos resultantes.
Las alternativas para un mismo hallazgo comparten grupo; las acciones
independientes usan NA. Como máximo una alternativa de cada grupo puede
tener aplicar == TRUE, invariante que aplicar() vuelve a validar. No se
agrega una fila ficticia para "no hacer nada": decision_grupo distingue
pendiente, recomendada, desactivada, elegida y omitida, mientras
recomendacion_grupo = "no_hacer_nada" representa una recomendación
explícita de conservar los datos. Esto permite separar un grupo aún no
revisado de una omisión deliberada.
estado distingue acciones lista, bloqueada e informativa; orden
fija la secuencia reproducible. n_afectadas es la estimación del perfil y
el registro informa n_cambiadas sobre los datos recibidos. reversible
indica si el resultado puede deshacerse sólo con los datos transformados.
La acción de codificación prueba las tablas congeladas de varias
codificaciones y deja en estado_reparacion uno de reparado,
reparado_parcialmente o no_se_pudo. Una reparación parcial no se activa
automáticamente: debe revisarse y seleccionarse de forma explícita. La
estrategia nueva se llama reparar_codificacion. El nombre histórico
reparar_codificacion_latin1 se acepta como alias para planes guardados,
aunque ya no limita el motor a latin-1.
Si se marca una acción que no está lista, aplicar() aborta antes de
modificar la copia y enumera las filas problemáticas; así no deja un conjunto
parcialmente transformado cuando el plan editable contiene una selección
inválida.
Las acciones con destructiva == TRUE eliminan filas o columnas, nunca son
recomendadas, declaran reversible == FALSE y requieren además
permitir_eliminacion = TRUE. Por defecto, el resultado conserva lo retirado
en eliminados; use conservar_eliminados = FALSE para evitar ese costo de
memoria.
Las imputaciones por dependencia funcional se ofrecen desactivadas. Aunque una dependencia exacta permite deducir un valor sin usar media, moda o un modelo externo, sigue siendo una regularidad aprendida de una sola entrega y puede reflejar un error sistemático en vez de una regla de negocio. El plan conserva el mapa y su soporte para que el usuario la confirme; sólo entonces se aplica y se vuelve a validar contra los datos recibidos.
marcar_filas_duplicadas añade dos columnas. .fila_duplicada reproduce la
semántica de duplicated() y marca sólo las apariciones posteriores;
.grupo_duplicado identifica a todas las filas que participan en cada
grupo de contenido idéntico.
El orden operativo se aparta deliberadamente de la secuencia dimensional frescura–completitud–exactitud–consistencia–unicidad sugerida por el marco. Primero marca duplicados sin borrar, luego normaliza ausencias y texto, y deja los cambios de esquema para el final. Esto evita perder la evidencia original, permite imputar antes de convertir tipos y mantiene identificables las columnas durante todo el plan. Las eliminaciones nunca se activan por defecto, por lo que deduplicar temprano no puede hacer desaparecer registros.
Ejemplos
datos <- data.frame(categoria = c(" A", "S/D", "B"))
perfil <- perfilar(datos)
plan <- planificar_limpieza(perfil)
plan[, c("grupo", "estrategia", "recomendada", "aplicar")]
#> grupo estrategia recomendada aplicar
#> 1 <NA> revisar_cardinalidad FALSE FALSE
#> 2 <NA> convertir_ausencias_textuales TRUE TRUE
#> 3 <NA> recortar_espacios TRUE TRUE
resultado <- aplicar(plan, datos)
resultado$datos
#> categoria
#> 1 A
#> 2 <NA>
#> 3 B