Closed omair-a-khan closed 5 years ago
reference code to help with writing the function:
mydat.cdr.temp <- mydat.long %>%
clear_labels() %>%
arrange(
map.id, epoch
) %>%
group_by(
map.id
) %>%
slice( # this keeps the last row in the group, aka the last available epoch
n()
) %>%
filter(
epoch != 1
) %>%
filter(
!is.na(cdr.factor)
) %>%
ungroup() %>%
select(
map.id, epoch, cdr.factor
) %>%
rename(
epoch.last = epoch,
cdr.factor.last = cdr.factor
) %>%
mutate(
cdr.factor.last = as.numeric(as.character(cdr.factor.last))
)
mydat <- mydat %>%
dplyr::select(
-cdr.factor
) %>%
mutate(
cdr.factor.base = as.numeric(as.character(cdr.factor.base))
) %>%
left_join(
mydat.cdr.temp[, c("map.id", "epoch.last", "cdr.factor.last")],
by = "map.id"
) %>%
mutate(
cdr.conversion = case_when(
diagnosis.factor.base %in% "Normal" ~ case_when(
cdr.factor.last == cdr.factor.base ~ "Stable",
cdr.factor.last > cdr.factor.base ~ "Conversion",
cdr.factor.last < cdr.factor.base ~ "Reversion"
),
diagnosis.factor.base %in% c("MCI", "Ambiguous At Risk") ~ case_when(
cdr.factor.last == cdr.factor.base ~ "Stable",
cdr.factor.last > cdr.factor.base ~ case_when(
cdr.factor.base == 0 & cdr.factor.last == 0.5 ~ "Stable",
TRUE ~ "Conversion"
),
cdr.factor.last < cdr.factor.base ~ case_when(
cdr.factor.base == 0.5 & cdr.factor.last == 0 ~ "Stable",
TRUE ~ "Reversion"
)
),
TRUE ~ NA_character_
)
) %>%
mutate(
cdr.conversion.factor = as.factor(cdr.conversion)
) %>%
select(
map.id, epoch.base, epoch.last, diagnosis.factor.base, cdr.conversion.factor, cdr.conversion, cdr.factor.base, cdr.factor.last, everything()
)
This function should ask for which two epochs are being compared and add the conversion variable to the project data set.