以下df代表單個患者在研究程序中接受的治療。他們首先收到藥物-v,然后是藥物-w,然后是藥物-x,依此類推。
original <- tibble::tribble(
~treatment_administered,
"drug-v",
"drug-w",
"drug-x",
"drug-y",
"drug-z",
"drug-l"
)
original
我的目標是保留屬于特定治療類別的先前治療暴露的累積記錄 - 我們稱之為“A級”。在此示例中,藥物 v、藥物 x 和藥物 z 屬于 A 類。這是我希望創建的最終 df。
final <- tibble::tribble(
~prior_classA_details, ~treatment_administered,
"", "drug-v",
"drug-v", "drug-w",
"drug-v", "drug-x",
"drug-v,drug-x", "drug-y",
"drug-v,drug-x", "drug-z",
"drug-v, drug x,drug-z", "drug-l"
)
final
如您所見,prior_classA_details正在跟蹤treatment_administered上一行,如果是 A 類處理,則將名稱添加到下一行。這是一個迭代程序,因為它在串列中,prior_classA_details隨著 A 類治療的實施而連接。
這里還有多個其他資料列df,我沒有在這里包括(僅包括相關列)。理想情況下請尋找 dplyr 解決方案。
uj5u.com熱心網友回復:
這是一種方法 -
library(dplyr)
library(purrr)
classA <- c("drug-v", "drug-x", "drug-z")
original %>%
mutate(prior_classA_details = lag(map_chr(row_number(), ~{
toString(keep(treatment_administered[seq_len(.x)], function(y) y %in% classA))
}), default = ''), .before = 1)
# prior_classA_details treatment_administered
# <chr> <chr>
#1 "" drug-v
#2 "drug-v" drug-w
#3 "drug-v" drug-x
#4 "drug-v, drug-x" drug-y
#5 "drug-v, drug-x" drug-z
#6 "drug-v, drug-x, drug-z" drug-l
我們為藥物創建一個向量,classA并為每一行僅保留那些classA以累積方式型別的值并創建一個連接字串。lag用于通過第 1 步獲取滯后記錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/430457.html
下一篇:R:將坐標轉換為“行程”
