A follow-up export can contain multiple visits per participant. Before joining it to another visit-level file, check whether each participant-and-visit pair occurs once. A join on the participant alone can match several records on each side.
The following rows are fictional. The duplicate could be a correction, a repeated export, or a real second visit recorded at the same nominal time. The check makes that case visible for review.
from collections import Counter
rows = [
("P01", "baseline", 12),
("P01", "month_1", 11),
("P01", "month_1", 10),
("P02", "baseline", 9),
]
counts = Counter((participant, visit) for participant, visit, _ in rows)
duplicates = sorted((key, count) for key, count in counts.items() if count > 1)
assert duplicates == [(("P01", "month_1"), 2)]
print(duplicates)
The output is [(('P01', 'month_1'), 2)]. Check the matching source records and the collection protocol before deciding whether to keep both. If two observations at the same nominal visit are expected, define a key that also distinguishes those observations. Run the same check on each input, then verify the joined row count against what the study design permits.
Top comments (0)