# Configuration
config <- data.frame(
uid = c("index_date_v1", "death_date_v1", "death_occurred_v1"),
variable = c("index_date", "death_date", "death_occurred"),
role = c("index-date,enabled", "outcome-date,enabled", "enabled"),
variableType = c("Continuous", "Continuous", "Categorical"),
position = c(1, 2, 3),
stringsAsFactors = FALSE
)
details <- data.frame(
uid = c("index_date_v1", "index_date_v1",
"death_date_v1", "death_date_v1",
"death_occurred_v1", "death_occurred_v1"),
uid_detail = c("index_date_v1_d1", "index_date_v1_d2",
"death_date_v1_d1", "death_date_v1_d2",
"death_occurred_v1_d1", "death_occurred_v1_d2"),
variable = c("index_date", "index_date",
"death_date", "death_date",
"death_occurred", "death_occurred"),
recStart = c(NA, NA, NA, NA, "0", "1"),
recEnd = c("date_start", "date_end", "date_start", "date_end", "0", "1"),
catLabel = c("Start", "End", "Start", "End", "No", "Yes"),
date_start = c("2001-01-01", NA, "2001-01-01", NA, NA, NA),
date_end = c(NA, "2017-03-31", NA, "2025-12-31", NA, NA),
proportion = c(NA, NA, NA, NA, 0.70, 0.30),
rType = c("Date", "Date", "Date", "Date", "factor", "factor"),
stringsAsFactors = FALSE
)
# Write to temporary files
temp_dir <- tempdir()
config_path <- file.path(temp_dir, "missing_events_config.csv")
details_path <- file.path(temp_dir, "missing_events_details.csv")
write.csv(config, config_path, row.names = FALSE)
write.csv(details, details_path, row.names = FALSE)
# Generate
mock_data <- create_mock_data(
config_path = config_path,
details_path = details_path,
n = 100,
seed = 123
)
# Set death_date to NA for non-deaths
mock_data$death_date[mock_data$death_occurred == 0] <- NA
# Check result
table(is.na(mock_data$death_date)) # Should be ~70% NA