library(dplyr)
library(tidyr)
bp_data <- tibble::tribble(
~pt_id, ~visit_date, ~sbp, ~dbp,
1, "2020-01-01", 145, 95,
1, "2020-04-02", 132, 88,
1, "2020-07-03", 116, 80,
2, "2020-01-01", 160, 105,
2, "2020-04-02", 152, 99,
2, "2020-07-03", 140, 85,
3, "2020-01-01", 162, 93,
3, "2020-04-02", 153, 88,
3, "2020-07-03", 139, 82,
4, "2020-01-01", 150, 95,
4, "2020-04-02", 143, 88,
4, "2020-07-03", 133, 83,
5, "2020-01-01", 160, 100,
5, "2020-04-02", 155, 95,
5, "2020-07-03", 148, 78
)
bp_data %>%
group_by(pt_id) |>
arrange(visit_date) |>
mutate(
sbp_change = sbp - lag(sbp),
dbp_change = dbp - lag(dbp)
) |>
mutate(encounter = row_number()) |>
replace_na(list(sbp_change=0, dbp_change=0)) |>
ggplot(aes(x= encounter,y = sbp_change,
color = factor(pt_id))) +
geom_line()