df <- structure (list(
subject_id = c("232-5467", "232-6784", "232-3457", "232-0987", "232-1245", "232-1945"),
HIV_VL_result_date_1 = c("2015-10-11","2015-10-10","2015-11-06","2016-02-02","2017-12-04","2019-02-15"),
VL_results_1 = c("LDL", "LDL", "LDL", "<100", "44405", "2322"),
HIV_VL_result_date_2 = c("2017-05-21", "2022-04-07", "2016-08-21", "2016-11-01", "2018-02-26",NA),
VL_results_2 = c("LDL", "5613", "LDL", "LDL", "93356", NA),
HIV_VL_result_date_3 = c("2018-06-27", "2022-07-15", "2022-04-13", "2017-03-01","2018-05-19",NA),
VL_results_3 = c("LDL", "6590", "LDL", "LDL", "19078",NA),
HIV_VL_result_date_4 = c("2020-04-16", "2022-08-15", NA, "2022-06-07", "2020-01-16",NA),
VL_results_4 = c("LDL", "375", NA, "36", "44",NA),
HIV_VL_result_date_5 = c("2021-03-25", "2023-01-28", NA, NA, "2022-05-03",NA),
VL_results_5 = c("LDL", "9125", NA, NA, "LDL",NA),
HIV_VL_result_date_6 = c("2022-03-07", NA, NA, NA, "2022-11-15",NA),
VL_results_6 = c("LDL", NA, NA, NA, "<20",NA),
preg_date = c("2022-03-04","2022-08-13","2022-05-04","2022-06-02","2022-04-14",NA)),
class = "data.frame", row.names = c(NA, -6L))
我需要执行以下操作:
- 在所有6个HIV_DL_select_Date中, Select 与preg_Date最接近的HIV_DL_select_Date以及相应的DL_results.
- 将所选日期和结果分别同步到vl_clest_Date和vl_results_clest
我try 过的是: 首先计算每个HIV_BL_select_Date和Preg日期之间的日期差异.产生6个新列.
date_columns <- grep("HIV_VL_result_date_", names(df), value = TRUE)
df <- df %>%
mutate(
across(
all_of(date_columns),
.fns = diff_lambda_list,
.names = "{.col}_diff_from_pregnancy_outcome"
)
)
然后我将 Select 每一行的绝对最低值,然后以某种方式提取与该最低值对应的原始日期.但我正在努力解决这个问题,当然必须有一种更简单的方法来做到这一点.我try 过搜索类似的问题,但找不到具有类似数据 struct 的问题.