A robust toolkit designed to standardize and clean complex tabular data
from commercial enterprise systems, healthcare records, logistics software, and HR
databases. Features include intelligent regex parsing for domain-specific noise
(currencies, percentages), gap-based block clustering, and automated messy table
resolution. Methods draw on tidy data principles described in Wickham (2014)

TidyPanel is an industrial-grade parser designed to extract clean, standardized data frames from heavily malformed, human-readable Excel reports. If you have ever struggled to parse financial statements, ERP exports, or complex tables with N-dimensional headers, decoy rows, and embedded subtotals, TidyPanel is built for you.
You can install the development version of TidyPanel from GitHub with:
# install.packages("devtools")
devtools::install_github("TonyL/TidyPanel")
Real-world commercial data is rarely tidy. It contains multi-line merged headers, embedded subtotal rows, empty "ghost" columns, and categorical hierarchies defined purely by visual indentation (e.g., in a Profit & Loss statement).
TidyPanel uses a multi-phase heuristic engine to:
parent_category column.Data parsing should never be a "black box". TidyPanel features a unique Audit Log that explicitly records every transformation applied to your data. By setting return_audit = TRUE, you get both the cleaned data and a precise ledger of what was modified.
library(TidyPanel)
# Read data and get an audit trail
result <- read_messy_panel("data_raw/financial_report.xlsx", return_audit = TRUE)
# View the audit trail
print(result$audit)
=== Algorithm Modification Audit Log ===
Operation Count
1 Decoy Rows Bypassed 5
2 Indentation Hierarchy Extracted 3
3 Ghost Bottom Rows Dropped 4
MIT © Tony Lu