Function build_data
pub fn build_data(
rows: impl IntoIterator<Item = DataRow>,
) -> Result<Data, DataError>Expand description
Build a Data object from an iterator of DataRows
This function handles all the complex assembly logic:
- Groups rows by subject ID
- Splits into occasions at EVID=4 boundaries
- Converts rows to events via
DataRow::into_events() - Builds covariates from row covariate data
ยงExample
use pharmsol::data::parser::{DataRow, build_data};
let rows = vec![
// Subject 1, Occasion 0
DataRow::builder("pt1", 0.0)
.evid(1).dose(100.0).input(1).build(),
DataRow::builder("pt1", 1.0)
.evid(0).out(50.0).outeq(1).build(),
// Subject 1, Occasion 1 (EVID=4 starts new occasion)
DataRow::builder("pt1", 24.0)
.evid(4).dose(100.0).input(1).build(),
DataRow::builder("pt1", 25.0)
.evid(0).out(48.0).outeq(1).build(),
// Subject 2
DataRow::builder("pt2", 0.0)
.evid(1).dose(50.0).input(1).build(),
];
let data = build_data(rows).unwrap();
assert_eq!(data.subjects().len(), 2);