{
  "_id": "6acf4027d9de2f3f33fc9903",
  "Package": "lupa",
  "Title": "Data Profiling and Quality Measurement",
  "Version": "0.1.0",
  "Authors@R": "c(\nperson(\"Sebastián\", \"Lucas\", , \"sebalucas@gmail.com\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0009-0009-9068-0276\")),\nperson(\"Robyn\", \"Speer\", role = \"cph\",\ncomment = \"encoding-repair design and character tables, from ftfy 6.3.1\"),\nperson(\"Nicholas\", \"Tierney\", role = \"cph\",\ncomment = \"missing-value sentinel vectors, from naniar 1.1.0\"),\nperson(\"Di\", \"Cook\", role = \"cph\",\ncomment = \"missing-value sentinel vectors, from naniar 1.1.0\"),\nperson(\"Miles\", \"McBain\", role = \"cph\",\ncomment = \"missing-value sentinel vectors, from naniar 1.1.0\"),\nperson(\"Colin\", \"Fay\", role = \"cph\",\ncomment = \"missing-value sentinel vectors, from naniar 1.1.0\")\n)",
  "Description": "Provides general-purpose data profiling and quality\nanalysis for tabular data. Discovers structural patterns,\nimplicit types, mixed date formats and reusable findings about\npotential data issues. Defines quality frameworks with\nuser-declared dimensions and factors, reusable metrics with\nexplicit granularity, typed aggregation, evaluation profiles,\nversioned histories, structural drift detection, and\nself-contained HyperText Markup Language reports without\nexternal rendering software. Produces editable cleaning plans\nand applies only explicitly selected actions while retaining an\naudit log. Includes bounded value distributions, quantiles,\nmixed-type associations, temporal regularity checks, and\nconfirmable measurement-scale proposals. The general model\nfollows the data-quality lineage described by Batini and\nScannapieco (2016) <doi:10.1007/978-3-319-24106-7>. The package\nships a traceable implementation of the Data Quality Management\nFramework for Digital Government, version 1.6, published by the\nAgency for Electronic Government and the Information and\nKnowledge Society (AGESIC) (2020)\n<https://www.gub.uy/agencia-gobierno-electronico-sociedad-informacion-conocimiento/>,\nand an optional taxonomy of the fifteen characteristics in the\nInternational Organization for Standardization and\nInternational Electrotechnical Commission standard ISO/IEC\n25012:2008 <https://www.iso.org/standard/35736.html>. It also\nincludes the four levels and nineteen principles of the United\nNations national quality assurance framework, adapted for Latin\nAmerica and the Caribbean by the Statistical Conference of the\nAmericas (CEA) of the Economic Commission for Latin America and\nthe Caribbean (CEPAL), based on the United Nations manual\n(2019) <https://unstats.un.org/unsd/methodology/dataquality/>\nand the regional guide (2022)\n<https://repositorio.cepal.org/handle/11362/47464>.",
  "License": "GPL-3",
  "URL": "https://github.com/sebollin/lupa, https://sebollin.github.io/lupa/",
  "BugReports": "https://github.com/sebollin/lupa/issues",
  "Encoding": "UTF-8",
  "Language": "es",
  "LazyData": "true",
  "Roxygen": "list(markdown = TRUE)",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Config/roxygen2/version": "8.0.0",
  "Repository": "https://sebollin.r-universe.dev",
  "Date/Publication": "2026-10-14 04:12:26 UTC",
  "RemoteUrl": "https://github.com/sebollin/lupa",
  "RemoteRef": "HEAD",
  "RemoteSha": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-14 07:53:34 UTC",
    "User": "root"
  },
  "Author": "Sebastián Lucas [aut, cre] (ORCID:\n<https://orcid.org/0009-0009-9068-0276>),\nRobyn Speer [cph] (encoding-repair design and character tables, from\nftfy 6.3.1),\nNicholas Tierney [cph] (missing-value sentinel vectors, from naniar\n1.1.0),\nDi Cook [cph] (missing-value sentinel vectors, from naniar 1.1.0),\nMiles McBain [cph] (missing-value sentinel vectors, from naniar 1.1.0),\nColin Fay [cph] (missing-value sentinel vectors, from naniar 1.1.0)",
  "Maintainer": "Sebastián Lucas <sebalucas@gmail.com>",
  "_user": "sebollin",
  "_type": "src",
  "_file": "lupa_0.1.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/ef4bd4855156835a844edf3fb34ca27139d782ced358e4a7686ebd6411e17415",
  "_filesize": 4661502,
  "_sha256": "ef4bd4855156835a844edf3fb34ca27139d782ced358e4a7686ebd6411e17415",
  "_expires": "2027-01-22T08:41:09.000Z",
  "_created": "2026-10-14T07:53:34.000Z",
  "_published": "2026-10-14T08:41:11.386Z",
  "_buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 115744025196,
      "time": 1314,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11879731292"
    },
    {
      "job": 115744025255,
      "time": 1636,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11879577221"
    },
    {
      "job": 115744025169,
      "time": 1357,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "11880496539"
    },
    {
      "job": 115744025167,
      "time": 1468,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11881065215"
    },
    {
      "job": 115742410581,
      "time": 266,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11878526326"
    },
    {
      "job": 115744025285,
      "time": 125,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11878686243"
    },
    {
      "job": 115744025298,
      "time": 2310,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "11879054496"
    },
    {
      "job": 115744025154,
      "time": 2563,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "11880131937"
    },
    {
      "job": 115744025205,
      "time": 2536,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11880830151"
    }
  ],
  "_upstream": "https://github.com/sebollin/lupa",
  "_commit": {
    "id": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
    "author": "Sebastián Lucas <sebalucas@gmail.com>",
    "committer": "Sebastián Lucas <sebalucas@gmail.com>",
    "message": "Proteccion, decisiones y piezas compartidas, refutadas: ronda 33\n\nProteccion: la via por bloques pasa por el mismo piso por valor que la via sin\nbloques, para todas las columnas, y ya no publica las cedulas ni los nombres que\nrepite una columna no personal; la coleccion vuelve a leer al final cada mensaje\ndel motor con todo lo que leyo, asi que el orden de las tablas no deja pasar el\nresto de un nombre ni el valor entero; el mensaje se guarda sin las secuencias\nde color de cli.\n\nDecisiones: la NoNulo de una columna opcional mide sobre las celdas presentes;\ncon columnas_codigo la corroboracion no compara lo que la declaracion manda no\ncalcular; la evaluacion de analizar() conserva su configuracion; el centinela\nescrito con la coma decimal de la columna cuenta como faltante disfrazado; la\nmedia de una columna entera se pide como doble en SQL Server, MySQL y MariaDB\n(salia recortada), y el desvio en PostgreSQL.\n\nPiezas compartidas: la fraccion de segundo se lee igual con LC_NUMERIC en coma;\nbajo un locale que no puede escribir el nombre de una columna, la via odbc la\ndeclara sin leer en vez de mandar una consulta que hacia caer a R; los argumentos\nque viajan por ... se leen con la misma regla en todos lados.\n\nPruebas O158, O159 y O160.\n",
    "time": 1791951146
  },
  "_maintainer": {
    "name": "Sebastián Lucas",
    "email": "sebalucas@gmail.com",
    "login": "sebollin",
    "linkedin": "in/sebalucas",
    "orcid": "0009-0009-9068-0276",
    "description": "Educator turned data scientist. Auditable R tooling for public-policy data.\nAuthor of {lupa} and {bigbang}, co-author of {geouy}.",
    "uuid": 26237913
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "cli",
      "version": ">= 3.0.0",
      "role": "Imports"
    },
    {
      "package": "data.table",
      "role": "Imports"
    },
    {
      "package": "bit64",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "DBI",
      "role": "Suggests"
    },
    {
      "package": "duckdb",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "RPostgres",
      "role": "Suggests"
    },
    {
      "package": "RSQLite",
      "role": "Suggests"
    },
    {
      "package": "sf",
      "role": "Suggests"
    },
    {
      "package": "stringdist",
      "role": "Suggests"
    },
    {
      "package": "stringi",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.1.7",
      "role": "Suggests"
    },
    {
      "package": "tibble",
      "role": "Suggests"
    },
    {
      "package": "units",
      "role": "Suggests"
    }
  ],
  "_owner": "sebollin",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-31",
      "n": 14
    },
    {
      "week": "2026-32",
      "n": 58
    },
    {
      "week": "2026-33",
      "n": 60
    },
    {
      "week": "2026-34",
      "n": 94
    },
    {
      "week": "2026-35",
      "n": 120
    },
    {
      "week": "2026-36",
      "n": 94
    },
    {
      "week": "2026-37",
      "n": 28
    },
    {
      "week": "2026-38",
      "n": 45
    },
    {
      "week": "2026-39",
      "n": 72
    },
    {
      "week": "2026-40",
      "n": 36
    },
    {
      "week": "2026-41",
      "n": 3
    },
    {
      "week": "2026-42",
      "n": 11
    }
  ],
  "_tags": [],
  "_topics": [
    "agesic",
    "data-cleaning",
    "data-profiling",
    "data-quality",
    "data-validation",
    "deduplication",
    "encoding",
    "iso-25012",
    "lsh",
    "minhash",
    "mojibake",
    "record-linkage"
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "sebollin",
      "count": 635,
      "uuid": 26237913
    }
  ],
  "_userbio": {
    "uuid": 26237913,
    "type": "user",
    "name": "Sebastián Lucas",
    "followers": 13,
    "description": "Educator turned data scientist. Auditable R tooling for public-policy data.\r\nAuthor of {lupa} and {bigbang}, co-author of {geouy}."
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/lupa"
  },
  "_devurl": "https://github.com/sebollin/lupa",
  "_pkgdown": "https://sebollin.github.io/lupa/",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/lupa.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md"
  ],
  "_cranurl": false,
  "_exports": [
    "acumular_historico",
    "agregar",
    "analizar",
    "analizar_tiempo",
    "aplicar",
    "catalogo_agesic",
    "clasificar_variables",
    "cobertura",
    "cobertura_analisis",
    "coleccion",
    "columnas",
    "comparar_equivalencia",
    "comparar_evaluaciones",
    "comparar_perfiles",
    "descubrir_patrones",
    "detectar_asociaciones",
    "detectar_claves",
    "detectar_dependencias",
    "detectar_deriva_calidad",
    "detectar_discordancias",
    "detectar_duplicados_aproximados",
    "detectar_formatos_fecha",
    "detectar_relaciones",
    "distribucion_valores",
    "elegir_clave",
    "escala",
    "especializar",
    "estadisticos_estimacion",
    "estimar_costo",
    "estimar_costo_coleccion",
    "evaluar",
    "granularidades",
    "guardar_analisis",
    "guardar_historico",
    "guiar_limpieza",
    "hallazgos",
    "historico_calidad",
    "indice_calidad",
    "inferir_tipo",
    "instanciar",
    "leer_analisis",
    "leer_historico",
    "marco_agesic",
    "marco_calidad",
    "marco_cepal",
    "marco_iso25012",
    "medicion_desde_estimaciones",
    "medir",
    "metrica",
    "metricas_nucleo",
    "metricas_referencial",
    "modelo",
    "modelo_desde_propuesta",
    "n_filas",
    "normalizacion",
    "organizacion",
    "pack_validadores",
    "perfil_evaluacion",
    "perfilar",
    "perfilar_coleccion",
    "perfilar_dbi",
    "perfilar_por",
    "perfiles_madurez",
    "plan_perfilado_dbi",
    "planificar_limpieza",
    "propiedades_metrica",
    "propiedades_regla",
    "proponer_modelo",
    "referencial",
    "regla_evaluacion",
    "relaciones_coleccion",
    "reportar",
    "requisitos_motor",
    "senal_redundante",
    "sentinelas_naniar",
    "sql_perfil",
    "sugerir_clave",
    "tablero_calidad",
    "transiciones_granularidad",
    "validadores_internacionales",
    "validadores_uruguay",
    "validar_ci_uy",
    "validar_correo",
    "validar_iso3166",
    "validar_iso4217",
    "validar_luhn",
    "validar_mod97",
    "validar_rut_uy",
    "validar_url",
    "vigencia"
  ],
  "_datasets": [
    {
      "name": "datos_administrativos",
      "title": "Datos administrativos sintéticos con problemas sembrados",
      "object": "datos_administrativos",
      "class": [
        "data.frame"
      ],
      "fields": [
        "id_persona",
        "cedula",
        "fecha_nacimiento",
        "sexo",
        "ingreso",
        "departamento",
        "pais",
        "correo",
        "id_copia",
        "id_tramite"
      ],
      "rows": 13,
      "table": true,
      "tojson": true
    },
    {
      "name": "datos_operativos",
      "title": "Datos operativos sintéticos y neutrales",
      "object": "datos_operativos",
      "class": [
        "data.frame"
      ],
      "fields": [
        "id_registro",
        "codigo_usuario",
        "fecha_evento",
        "canal",
        "monto",
        "zona",
        "sistema",
        "contacto",
        "id_copia",
        "id_evento"
      ],
      "rows": 13,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "accesores_perfil",
      "title": "Leer un perfil sin depender de su forma",
      "topics": [
        "accesores_perfil",
        "cobertura",
        "columnas",
        "hallazgos",
        "n_filas",
        "sql_perfil"
      ]
    },
    {
      "page": "agregar",
      "title": "Agregar medidas entre granularidades",
      "topics": [
        "agregar"
      ]
    },
    {
      "page": "analizar",
      "title": "Ejecutar el análisis descriptivo completo",
      "topics": [
        "analizar"
      ]
    },
    {
      "page": "analizar_tiempo",
      "title": "Examinar regularidad y cobertura temporal",
      "topics": [
        "analizar_tiempo"
      ]
    },
    {
      "page": "catalogo_agesic",
      "title": "Correspondencia con el catálogo de métricas de AGESIC",
      "topics": [
        "catalogo_agesic"
      ]
    },
    {
      "page": "clasificar_variables",
      "title": "Proponer escalas y roles de las variables",
      "topics": [
        "clasificar_variables"
      ]
    },
    {
      "page": "cobertura_analisis",
      "title": "Informar la cobertura conceptual de un análisis",
      "topics": [
        "cobertura_analisis"
      ]
    },
    {
      "page": "coleccion",
      "title": "Declarar la frontera de una colección",
      "topics": [
        "coleccion"
      ]
    },
    {
      "page": "comparar_equivalencia",
      "title": "Comparar la equivalencia de dos resúmenes de perfiles",
      "topics": [
        "comparar_equivalencia"
      ]
    },
    {
      "page": "comparar_evaluaciones",
      "title": "Comparar evaluaciones de perfil",
      "topics": [
        "comparar_evaluaciones"
      ]
    },
    {
      "page": "comparar_perfiles",
      "title": "Comparar dos perfiles y detectar deriva estructural",
      "topics": [
        "comparar_perfiles"
      ]
    },
    {
      "page": "contratos_medicion",
      "title": "Declarar vigencia y escala de medición",
      "topics": [
        "contratos_medicion",
        "escala",
        "vigencia"
      ]
    },
    {
      "page": "datos_administrativos",
      "title": "Datos administrativos sintéticos con problemas sembrados",
      "topics": [
        "datos_administrativos"
      ]
    },
    {
      "page": "datos_operativos",
      "title": "Datos operativos sintéticos y neutrales",
      "topics": [
        "datos_operativos"
      ]
    },
    {
      "page": "descubrir_patrones",
      "title": "Descubrir patrones de formato",
      "topics": [
        "descubrir_patrones"
      ]
    },
    {
      "page": "detectar_asociaciones",
      "title": "Detectar asociaciones entre columnas",
      "topics": [
        "detectar_asociaciones"
      ]
    },
    {
      "page": "detectar_claves",
      "title": "Detectar claves candidatas",
      "topics": [
        "detectar_claves"
      ]
    },
    {
      "page": "detectar_dependencias",
      "title": "Detectar dependencias funcionales entre columnas",
      "topics": [
        "detectar_dependencias"
      ]
    },
    {
      "page": "detectar_deriva_calidad",
      "title": "Detectar deriva en una serie de evaluaciones",
      "topics": [
        "detectar_deriva_calidad"
      ]
    },
    {
      "page": "detectar_discordancias",
      "title": "Detectar filas donde señales redundantes se contradicen",
      "topics": [
        "detectar_discordancias"
      ]
    },
    {
      "page": "detectar_duplicados_aproximados",
      "title": "Detectar pares de filas con similitud aproximada",
      "topics": [
        "detectar_duplicados_aproximados"
      ]
    },
    {
      "page": "detectar_formatos_fecha",
      "title": "Detectar formatos de fecha",
      "topics": [
        "detectar_formatos_fecha"
      ]
    },
    {
      "page": "detectar_relaciones",
      "title": "Detectar relaciones entre dos tablas",
      "topics": [
        "detectar_relaciones"
      ]
    },
    {
      "page": "distribucion_valores",
      "title": "Distribuciones de valores y cuantiles por columna",
      "topics": [
        "distribucion_valores"
      ]
    },
    {
      "page": "elegir_clave",
      "title": "Elegir la clave entre las sugeridas",
      "topics": [
        "elegir_clave"
      ]
    },
    {
      "page": "estadisticos_estimacion",
      "title": "Catálogo de estadísticos de estimación reconocidos",
      "topics": [
        "estadisticos_estimacion"
      ]
    },
    {
      "page": "estimar_costo",
      "title": "Estimar el costo de una comparación de duplicados",
      "topics": [
        "estimar_costo"
      ]
    },
    {
      "page": "estimar_costo_coleccion",
      "title": "Estimar el costo de buscar relaciones en una colección",
      "topics": [
        "estimar_costo_coleccion"
      ]
    },
    {
      "page": "evaluar",
      "title": "Evaluar medidas, reglas y perfiles",
      "topics": [
        "evaluar"
      ]
    },
    {
      "page": "granularidades",
      "title": "Granularidades y transiciones de agregación",
      "topics": [
        "granularidades",
        "transiciones_granularidad"
      ]
    },
    {
      "page": "guardar_historico",
      "title": "Guardar y recuperar un histórico de calidad",
      "topics": [
        "guardar_historico",
        "leer_historico"
      ]
    },
    {
      "page": "guiar_limpieza",
      "title": "Revisar decisiones de limpieza paso a paso",
      "topics": [
        "guiar_limpieza"
      ]
    },
    {
      "page": "historico_calidad",
      "title": "Construir y ampliar un histórico de calidad",
      "topics": [
        "acumular_historico",
        "historico_calidad"
      ]
    },
    {
      "page": "indice_calidad",
      "title": "Calcular un índice de calidad declarado por el usuario",
      "topics": [
        "indice_calidad"
      ]
    },
    {
      "page": "inferir_tipo",
      "title": "Inferir el tipo implícito de un vector",
      "topics": [
        "inferir_tipo"
      ]
    },
    {
      "page": "marco_calidad",
      "title": "Declarar una taxonomía de calidad de datos",
      "topics": [
        "marco_agesic",
        "marco_calidad",
        "marco_cepal",
        "marco_iso25012"
      ]
    },
    {
      "page": "medicion_desde_estimaciones",
      "title": "Llevar estimaciones ya calculadas al contrato de medición",
      "topics": [
        "medicion_desde_estimaciones"
      ]
    },
    {
      "page": "medir",
      "title": "Medir un modelo de calidad",
      "topics": [
        "medir"
      ]
    },
    {
      "page": "metricas_referencial",
      "title": "Métricas que consumen un referencial tabular",
      "topics": [
        "metricas_referencial"
      ]
    },
    {
      "page": "modelo_calidad",
      "title": "Construir métricas y modelos de calidad",
      "topics": [
        "especializar",
        "instanciar",
        "metrica",
        "metricas_nucleo",
        "modelo",
        "modelo_calidad",
        "propiedades_metrica"
      ]
    },
    {
      "page": "modelo_desde_propuesta",
      "title": "Materializar una propuesta de modelo de calidad",
      "topics": [
        "modelo_desde_propuesta"
      ]
    },
    {
      "page": "normalizacion",
      "title": "Perfiles de normalizacion para comparar valores",
      "topics": [
        "normalizacion"
      ]
    },
    {
      "page": "organizacion",
      "title": "Declarar una organización y las colecciones que le pertenecen",
      "topics": [
        "organizacion"
      ]
    },
    {
      "page": "pack_validadores",
      "title": "Crear y consultar packs de validadores",
      "topics": [
        "pack_validadores",
        "validadores_internacionales",
        "validadores_uruguay"
      ]
    },
    {
      "page": "perfilar",
      "title": "Perfilar un conjunto de datos",
      "topics": [
        "perfilar"
      ]
    },
    {
      "page": "perfilar_coleccion",
      "title": "Perfilar una colección declarada",
      "topics": [
        "perfilar_coleccion"
      ]
    },
    {
      "page": "perfilar_dbi",
      "title": "Perfilar una muestra leída mediante DBI",
      "topics": [
        "perfilar_dbi"
      ]
    },
    {
      "page": "perfilar_por",
      "title": "Perfilar una tabla por grupos de filas",
      "topics": [
        "perfilar_por"
      ]
    },
    {
      "page": "persistir_analisis",
      "title": "Guardar y recuperar un análisis",
      "topics": [
        "guardar_analisis",
        "leer_analisis",
        "persistir_analisis"
      ]
    },
    {
      "page": "plan_perfilado_dbi",
      "title": "Planificar el costo de 'perfilar_dbi()' antes de pagarlo",
      "topics": [
        "plan_perfilado_dbi"
      ]
    },
    {
      "page": "planificar_limpieza",
      "title": "Construir y aplicar un plan de limpieza auditable",
      "topics": [
        "aplicar",
        "planificar_limpieza"
      ]
    },
    {
      "page": "propiedades_regla",
      "title": "Propiedades declaradas de una regla de evaluación",
      "topics": [
        "propiedades_regla"
      ]
    },
    {
      "page": "proponer_modelo",
      "title": "Proponer un modelo de calidad desde el profiling",
      "topics": [
        "proponer_modelo"
      ]
    },
    {
      "page": "referencial",
      "title": "Declarar un conjunto de datos referencial",
      "topics": [
        "referencial"
      ]
    },
    {
      "page": "reglas_evaluacion",
      "title": "Reglas y perfiles de evaluación",
      "topics": [
        "perfiles_madurez",
        "perfil_evaluacion",
        "reglas_evaluacion",
        "regla_evaluacion"
      ]
    },
    {
      "page": "relaciones_coleccion",
      "title": "Buscar claves foráneas candidatas entre pares declarados",
      "topics": [
        "relaciones_coleccion"
      ]
    },
    {
      "page": "reportar",
      "title": "Crear un reporte HTML autocontenido",
      "topics": [
        "reportar"
      ]
    },
    {
      "page": "requisitos_motor",
      "title": "Consultar requisitos para conectarse a motores de bases",
      "topics": [
        "requisitos_motor"
      ]
    },
    {
      "page": "senal_redundante",
      "title": "Declarar una señal redundante entre columnas",
      "topics": [
        "senal_redundante"
      ]
    },
    {
      "page": "sentinelas_naniar",
      "title": "Sentinelas numéricos publicados por naniar",
      "topics": [
        "sentinelas_naniar"
      ]
    },
    {
      "page": "sugerir_clave",
      "title": "Sugerir qué columnas podrían ser la clave",
      "topics": [
        "sugerir_clave"
      ]
    },
    {
      "page": "tablero_calidad",
      "title": "Construir un tablero de calidad",
      "topics": [
        "tablero_calidad"
      ]
    },
    {
      "page": "validadores_formato",
      "title": "Validadores internacionales de sintaxis y dígitos de control",
      "topics": [
        "validadores_formato",
        "validar_correo",
        "validar_iso3166",
        "validar_iso4217",
        "validar_luhn",
        "validar_mod97",
        "validar_url"
      ]
    },
    {
      "page": "validadores_uy",
      "title": "Validadores estructurales de Uruguay",
      "topics": [
        "validadores_uy",
        "validar_ci_uy",
        "validar_rut_uy"
      ]
    }
  ],
  "_pkglogo": "https://github.com/sebollin/lupa/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/sebollin/lupa/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "data.table"
  ],
  "_vignettes": [
    {
      "source": "definir-la-calidad.Rmd",
      "filename": "definir-la-calidad.html",
      "title": "Definir la calidad",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Declarar dimensiones y factores",
        "Dimensión, factor y métrica son una taxonomía",
        "Marcos incluidos",
        "El marco de aseguramiento de la calidad de CEA/CEPAL",
        "El marco y el catálogo de AGESIC",
        "Validadores y packs territoriales",
        "Lo que no se midió también es un resultado",
        "Referencias"
      ],
      "created": "2026-08-17 14:16:32",
      "modified": "2026-09-03 03:00:44",
      "commits": 2
    },
    {
      "source": "vacio-por-diseno.Rmd",
      "filename": "vacio-por-diseno.html",
      "title": "El vacío por diseño",
      "engine": "knitr::rmarkdown",
      "headings": [
        "El supuesto que lupa hace y no hacía explícito",
        "Seis formas de tabla donde el vacío es la estructura",
        "Qué pasa si no se declara nada",
        "La señal que dice que hay algo para declarar",
        "Declarar el universo",
        "El error simétrico",
        "Cuando la regla no se puede determinar",
        "El formato largo: perfilar_por()",
        "Lo que lupa no hace",
        "Y el reverso: cuando la declaración tapa un problema"
      ],
      "created": "2026-08-20 18:20:02",
      "modified": "2026-10-12 10:49:32",
      "commits": 5
    },
    {
      "source": "empezar-con-lupa.Rmd",
      "filename": "empezar-con-lupa.html",
      "title": "Empezar con lupa",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Una entrega tabular",
        "Del diagnóstico al modelo",
        "Mejorar sin perder trazabilidad",
        "Un archivo para compartir"
      ],
      "created": "2026-08-02 05:36:14",
      "modified": "2026-10-13 23:14:17",
      "commits": 18
    },
    {
      "source": "escala-y-duplicados.Rmd",
      "filename": "escala-y-duplicados.html",
      "title": "Escala y duplicados",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Un conjunto pequeño",
        "Estimar antes de comparar",
        "Un tope de largo para la señal de proximidad",
        "Qué largo es el que cuenta",
        "Dos topes, dos perillas",
        "Avisar el costo de tablas anchas",
        "Comparación exacta y LSH",
        "Bloquear declarando la pérdida",
        "Lotes sin pérdida",
        "Presupuestos que miden trabajo y no unidades",
        "El recorte de pares, y por qué también se ordena por contenido",
        "Lo que ordenar no arregla",
        "Y una advertencia sobre el camino LSH"
      ],
      "created": "2026-08-06 16:39:06",
      "modified": "2026-09-17 15:56:26",
      "commits": 22
    },
    {
      "source": "estructura-no-declarada.Rmd",
      "filename": "estructura-no-declarada.html",
      "title": "Estructura no declarada",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Dos tablas que se pueden seguir fila por fila",
        "Patrones, tipos y fechas en los datos incluidos",
        "Escalas, distribuciones y asociaciones",
        "Cobertura temporal",
        "El vocabulario de granularidad"
      ],
      "created": "2026-08-17 13:35:12",
      "modified": "2026-09-24 11:53:45",
      "commits": 6
    },
    {
      "source": "flujo-guiado.Rmd",
      "filename": "flujo-guiado.html",
      "title": "Flujo guiado: del perfil a la evaluación",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. Perfilar",
        "2. Proponer y editar",
        "3. Materializar y medir",
        "4. Evaluar",
        "5. Consultar la cobertura"
      ],
      "created": "2026-08-30 05:04:14",
      "modified": "2026-09-18 11:32:28",
      "commits": 7
    },
    {
      "source": "historico-y-deriva.Rmd",
      "filename": "historico-y-deriva.html",
      "title": "Histórico y monitoreo de deriva",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Serie de evaluaciones",
        "Deriva estructural entre entregas",
        "Equivalencia de resúmenes"
      ],
      "created": "2026-08-02 05:36:14",
      "modified": "2026-10-12 10:49:32",
      "commits": 8
    },
    {
      "source": "limpiar-con-un-plan.Rmd",
      "filename": "limpiar-con-un-plan.html",
      "title": "Limpiar con un plan auditable",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Recomendaciones y decisiones de dominio",
        "Grupos mutuamente excluyentes",
        "Aplicar conserva evidencia",
        "Lo que el plan no cubre lo dice",
        "Imputar por una dependencia"
      ],
      "created": "2026-08-02 05:36:14",
      "modified": "2026-09-25 00:32:59",
      "commits": 6
    },
    {
      "source": "medir-y-evaluar.Rmd",
      "filename": "medir-y-evaluar.html",
      "title": "Medir y evaluar",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Tres niveles de métrica",
        "Una métrica propia de punta a punta",
        "Medir y agregar",
        "Tablero, orientación e índice",
        "Evaluar no es volver a medir",
        "Referencias"
      ],
      "created": "2026-08-17 14:16:32",
      "modified": "2026-09-17 14:12:05",
      "commits": 5
    },
    {
      "source": "perfilar-una-base.Rmd",
      "filename": "perfilar-una-base.html",
      "title": "Perfilar una base",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Un ejemplo en memoria",
        "Antes de conectarse: qué hace falta para cada motor",
        "Leer el resultado sin memorizar su forma",
        "Los dos bloques posibles del resultado",
        "resumen_tabla: agregados sobre la tabla completa",
        "perfil_muestra: el perfil completo de la muestra",
        "El muestreo declarado",
        "Muestras y aproximaciones para tablas grandes",
        "La memoria del procesamiento no se estima",
        "Lo que el muestreo en el motor no puede darte"
      ],
      "created": "2026-08-17 13:35:12",
      "modified": "2026-10-12 10:49:32",
      "commits": 61
    }
  ],
  "_score": 4.778151250383644,
  "_indexed": true,
  "_nocasepkg": "lupa",
  "_universes": [
    "sebollin"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.0",
      "date": "2026-10-14T07:56:33.000Z",
      "distro": "resolute",
      "commit": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
      "fileid": "https://r2.ropensci.org/546d2741a7959b58c262c23ceabb6f4d27b7546959f0d98b0bcef36d18c041be",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.1.0",
      "date": "2026-10-14T07:56:21.000Z",
      "distro": "resolute",
      "commit": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
      "fileid": "https://r2.ropensci.org/3b7b2e41b23fdf327a2e61409338eb71756cfe17703ffccaa3ff5113dcb959fe",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.0",
      "date": "2026-10-14T08:19:49.000Z",
      "commit": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
      "fileid": "https://r2.ropensci.org/2b9a14f243df09d2d52436fe2f2d122062313f8cca830787fa9d6e1eb9e185f4",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.1.0",
      "date": "2026-10-14T08:16:09.000Z",
      "commit": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
      "fileid": "https://r2.ropensci.org/96592a6302251e540c3894e1b487e65bbe56f7a7e1d74cb2cf8c8fd9ac71a290",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.0",
      "date": "2026-10-14T07:56:32.000Z",
      "commit": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
      "fileid": "https://r2.ropensci.org/b7785a4057abdaf76a45535e2ae3a9b024468d0b5702beee79bc69cb05a402e9",
      "status": "success",
      "buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.0",
      "date": "2026-10-14T07:55:37.000Z",
      "commit": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
      "fileid": "https://r2.ropensci.org/c30e8e08f3529f1f1b62591402aeee501dda74787f5d0f4647fc180bf46752ea",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.0",
      "date": "2026-10-14T07:55:37.000Z",
      "commit": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
      "fileid": "https://r2.ropensci.org/f966752da1b157243f9223151c03413257dde18f68ead99eaaea809d7ea82ab7",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.1.0",
      "date": "2026-10-14T07:55:32.000Z",
      "commit": "8e95a3eccb73ab05042565c1921131d7b0a8d186",
      "fileid": "https://r2.ropensci.org/a4b83ea024d694004d6ed9349e2edba608a519d739a7bdcf68bc00df336332ac",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sebollin/actions/runs/38530905857"
    }
  ]
}