Define Pre-hypertension and hypertension separately
Define HTN throughout study visits
jointfromckd <- jointfromckd %>%
mutate(htn = ifelse(SBPpercentile >= 95 | DBPpercentile >=
95, 2, ifelse(SBPpercentile >= 90 | DBPpercentile >=
90, 1, 0))) %>%
relocate(htn, .after = DBPpercentile)
Define HTN at baseline
trend <- jointfromckd %>% drop_na(SBPpercentile, DBPpercentile) %>% # be careful with this drop_na
group_by(id) %>%
arrange(YearsFromBaseline) %>%
summarize(htn_base = head(htn,1))
Calculate number of study visits, number of time diagnosed with
hypertenstion/pre/normal
aggreg <- jointfromckd %>% group_by(id) %>%
filter(!(id %in% c(3691,5638,5724,7382,9402))) %>% # These ids have no data on BP
summarize(VisitNumbers= n(),
HTN = sum(htn == 2, na.rm = T),
preHTN = sum(htn == 1, na.rm = T),
NoTN = sum(htn == 0, na.rm = T)) %>%
mutate(change = case_when(HTN == 0 & preHTN == 0 ~ 0, # 0 means unchanged
HTN == 0 & NoTN == 0 ~ 0,
preHTN == 0 & NoTN == 0 ~ 0,
.default = 1), # 1 means fluctuation
unchangedHTN = case_when(change == 0 & HTN > 0 ~ 1,
.default = 0),
unchangedpreHTN = case_when(change == 0 & preHTN > 0 ~ 1,
.default = 0),
unchangedNoTN = case_when(change == 0 & NoTN > 0 ~ 1,
.default = 0),
transition = case_when(unchangedNoTN == 1 ~ 0,
unchangedpreHTN == 1 ~ 1,
unchangedHTN == 1 ~ 2,
.default = 3))
Combine datasets
ckdtoevent <- left_join(ckdtoevent, trend %>%
select(id, htn_base), by = "id")
ckdtoevent <- left_join(ckdtoevent, aggreg %>%
select(id, VisitNumbers, HTN, preHTN, NoTN, transition),
by = "id")
jointfromckd <- left_join(jointfromckd, trend %>%
select(id, htn_base), by = "id")
jointfromckd <- left_join(jointfromckd, aggreg %>%
select(id, HTN, preHTN, NoTN, transition), by = "id")
Create Survival Object with Composite outcome (renal transplant and
dialysis)
ckdtoevent <- ckdtoevent %>%
mutate(events = ifelse(Trans2Dial1noRRT0atExit %in% 1:2,
1, 0))
ckdtoevent <- ckdtoevent %>%
mutate(SurvObj = Surv(StudyEntrytoRRTorExit, events))
Table 1
ckdtoevent %>%
mutate(BaselineYearsFromCKD = AgeAtStudyEntry - AgeAtCKD,
htn_base = factor(htn_base, level = 0:2, labels = c("Normotensive",
"Pre-hypertension", "Hypertension"))) %>%
tbl_summary(include = c(AgeAtCKD, AgeAtStudyEntry, male1female0,
Glomdx1NG0, BaselineYearsFromCKD, gfr, BMIpercentile,
VisitNumbers), by = htn_base, label = list(AgeAtCKD ~
"Age at CKD Diagnosis (years)", AgeAtStudyEntry ~ "Age at Study Entry (years)",
male1female0 ~ "Gender Male", Glomdx1NG0 ~ "Glomerular Disease",
BaselineYearsFromCKD ~ "Baseline Years from CKD (viz. Late time)",
gfr ~ "Baseline GFR (ml/min per 1.73m2)", BMIpercentile ~
"Baseline BMI Percentiles", VisitNumbers ~ "Number of Study Visit"),
missing_text = "(Missing)") %>%
modify_header(label ~ "**Variable**") %>%
modify_spanning_header(c("stat_1", "stat_2", "stat_3") ~
"**Diagnosis at Baseline**") %>%
add_overall() %>%
add_p() %>%
bold_labels() %>%
bold_p()
## 6 observations missing `htn_base` have been removed. To include these observations, use `forcats::fct_na_value_to_level()` on `htn_base` column before passing to `tbl_summary()`.
| Variable |
Overall, N = 889 |
Diagnosis at Baseline
|
p-value |
| Normotensive, N = 620 |
Pre-hypertension, N = 96 |
Hypertension, N = 173 |
| Age at CKD Diagnosis (years) |
0.0 (0.0, 3.5) |
0.0 (0.0, 4.5) |
0.0 (0.0, 1.0) |
0.0 (0.0, 1.5) |
0.046 |
| Age at Study Entry (years) |
11.0 (6.9, 14.6) |
11.9 (8.1, 14.8) |
8.9 (4.8, 14.0) |
9.1 (6.0, 13.7) |
<0.001 |
| Gender Male |
552 (62%) |
373 (60%) |
65 (68%) |
114 (66%) |
0.2 |
| Glomerular Disease |
262 (29%) |
194 (31%) |
22 (23%) |
46 (27%) |
0.2 |
| Baseline Years from CKD (viz. Late time) |
7.7 (3.4, 12.1) |
8.2 (3.7, 12.5) |
5.6 (3.0, 10.2) |
6.2 (3.1, 10.1) |
0.004 |
| Baseline GFR (ml/min per 1.73m2) |
53 (39, 67) |
55 (40, 68) |
50 (38, 66) |
49 (35, 60) |
<0.001 |
| Â Â Â Â (Missing) |
1 |
1 |
0 |
0 |
|
| Baseline BMI Percentiles |
69 (39, 91) |
68 (38, 91) |
68 (36, 89) |
75 (45, 94) |
0.12 |
| Â Â Â Â (Missing) |
31 |
13 |
4 |
14 |
|
| Number of Study Visit |
5 (3, 7) |
6 (4, 7) |
5 (3, 7) |
5 (3, 7) |
0.4 |
KM-curve stratified by baseline hypertension
ggsurvplot(survfit(SurvObj ~ htn_base, data = ckdtoevent), data = ckdtoevent %>%
mutate(htn_base = factor(htn_base, levels = 0:2, labels = c("Normotensive",
"Prehypertensive", "Hypertensive"))), palette = "lancet",
linetype = 1, censor.size = 0.8, title = "Renal Replacement Therapy",
xlab = "Follow-up time (years)", ylim = c(0, 1), break.x.by = 1) +
guides(colour = guide_legend(nrow = 2))

Transition of blood pressure diagnosis during the study period
jointfromckd %>%
drop_na(htn, htn_base) %>%
mutate(htn = factor(htn, level = 0:2, label = c("Normotensive",
"Prehypertensive", "Hypertensive")), htn_base = factor(htn_base,
level = 0:2, label = c("Normotensive", "Prehypertensive",
"Hypertensive"))) %>%
ggplot(aes(x = YearsFromBaseline, y = htn, group = id, col = htn_base)) +
geom_line() + facet_grid(htn_base + transition ~ .)
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?

KM-curve stratified by transition
ggsurvplot(survfit(SurvObj ~ transition, data = ckdtoevent %>%
mutate(transition = factor(transition, levels = 0:3, labels = c("All-time Normotensive",
"All-time Pre-Hypertensive", "All-time Hypertensive",
"FLuctuation")))), data = ckdtoevent, palette = "lancet",
linetype = 1, censor.size = 0.8, title = "Renal Replacement Therapy",
xlab = "Follow-up time (years)", ylim = c(0, 1), break.x.by = 1) +
guides(colour = guide_legend(nrow = 2))

Combine HTN and Pre-HTN
Define HTN throughout study visits
jointfromckd <- jointfromckd %>%
mutate(abtn = ifelse(SBPpercentile >= 90 | DBPpercentile >=
90, 1, 0)) %>%
relocate(abtn, .after = DBPpercentile)
Define HTN at baseline and study end
trend_c <- jointfromckd %>%
drop_na(SBPpercentile, DBPpercentile) %>%
group_by(id) %>%
arrange(YearsFromBaseline) %>%
summarize(abtn_base = head(abtn, 1), abtn_end = tail(abtn,
1))
Calculate number of study visits, number of
hypertenstion/pre/normal
aggreg_c <- left_join(jointfromckd, trend_c %>% select(id,abtn_base,abtn_end), by = "id") %>%
group_by(id) %>%
filter(!(id %in% c(3691,5638,5724,7382,9402))) %>% # These ids have no data on BP
summarize(VisitNumbers= n(),
abHTN = sum(abtn == 1, na.rm = T),
NoTN = sum(abtn == 0, na.rm = T),
abtn_base = head(abtn_base,1)) %>%
mutate(change = case_when(NoTN == 0 ~ 0, # 0 means unchanged
abHTN == 0 ~ 0,
.default = 1), # 1 means fluctuation
unchangedAbHTN = case_when(change == 0 & abHTN > 0 ~ 1,
.default = 0),
unchangedNoTN = case_when(change == 0 & NoTN > 0 ~ 1,
.default = 0),
transition_c = case_when(unchangedNoTN == 1 ~ 0,
unchangedAbHTN == 1 ~ 1,
.default = 2),
transition_c_spec = case_when(transition_c == 0 ~ 0,
transition_c == 1 ~ 1,
transition_c == 2 & abtn_base == 1 ~ 2,
transition_c == 2 & abtn_base == 0 ~ 3))
Combine datasets
ckdtoevent <- left_join(ckdtoevent, aggreg_c %>%
select(id, transition_c, transition_c_spec), by = "id")
ckdtoevent <- left_join(ckdtoevent, trend_c %>%
select(id, abtn_base, abtn_end), by = "id")
jointfromckd <- left_join(jointfromckd, trend_c %>%
select(id, abtn_base, abtn_end), by = "id")
jointfromckd <- left_join(jointfromckd, aggreg_c %>%
select(id, transition_c, transition_c_spec), by = "id")
Transition of blood pressure diagnosis during the study period
jointfromckd %>%
drop_na(abtn, abtn_base) %>%
mutate(abtn = factor(abtn, level = 0:1, label = c("Normotensive",
"Abnormotensive")), abtn_base = factor(abtn_base, level = 0:1,
label = c("Normotensive", "Abnormotensive"))) %>%
ggplot(aes(x = YearsFromBaseline, y = abtn, group = id, col = abtn_base)) +
geom_line() + facet_grid(abtn_base + transition_c_spec ~
.)

KM-curve stratified by transition
ggsurvplot(survfit(SurvObj ~ transition_c_spec, data = ckdtoevent),
data = ckdtoevent, palette = "lancet", linetype = 1, censor.size = 0.8,
title = "Renal Replacement Therapy", xlab = "Follow-up time (years)",
ylim = c(0, 1), break.x.by = 1) + guides(colour = guide_legend(nrow = 2))
