Skip to course content
Free R data course

R Foundations for Data Analysis

Unit 08.00: Steps, outputs, evidence

A plan you cannot check off is not a plan. Each step names one file and one thing that proves it worked.

Steps, outputs, evidence

The failure mode of an analysis project is not running out of skill. It is discovering at the end that a middle step was never really finished, and that nothing recorded what it was supposed to produce.

A plan as a table fixes that. Each row names the task, the artefact it produces, and the evidence that the artefact is right. A step with no output is not a step โ€” it is an intention, and it cannot be checked or handed over.

The plan is also where scope gets stated. Writing down what the project does *not* include is what stops a descriptive report acquiring a regression model in its last week.

This block is the plan for the mini-project you are about to build.

# A plan is a table you can check off, not a paragraph of intent.
plan <- data.frame(
  step     = 1:6,
  task     = c("Import returns", "Inspect and log issues", "Clean with a rule per issue",
               "Summarise by ward", "Chart the rates", "Write the report"),
  output   = c("data-clean/returns.rds", "outputs/inspection-notes.md",
               "outputs/cleaning-log.csv", "outputs/by-ward.csv",
               "outputs/rates.png", "report.qmd"),
  evidence = c("row count matches source", "every issue has a decision",
               "log rows sum to rows removed", "months column present",
               "axis starts at zero", "every claim traceable to a number")
)

for (i in seq_len(nrow(plan))) {
  cat(sprintf("%d. %-28s -> %-28s [%s]\n",
              plan$step[i], plan$task[i], plan$output[i], plan$evidence[i]))
}

cat("\nEach step names one output file and one thing that proves it worked.\n")
cat("A step with no output is not a step; it is a hope.\n")
cat("Scope stated: ", nrow(plan), " steps, ", length(unique(plan$output)),
    " artefacts, no modelling.\n", sep = "")

Six steps, 6 artefacts, and one piece of evidence each โ€” the row count matching the source, every issue having a decision, the cleaning log summing to the rows removed, the months column being present, the axis starting at zero, every claim traceable to a number. The last line states the scope boundary explicitly: no modelling.

The mistake this prevents

The mistake is planning in verbs alone โ€” 'clean the data', 'do the analysis'. Neither can be marked complete, so both stay open until the deadline forces a decision.

Takeaway

Write the plan as a table with a named output and a check for every step. State what is out of scope. Keep it in the project so it can be updated rather than remembered.