gpt4 book ai didi

r - 循环遍历数据框中的列并根据 R 中的特定条件连接字符串

转载 作者:行者123 更新时间:2023-12-05 02:32:28 24 4
gpt4 key购买 nike

以下 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 解决方案。

最佳答案

这是一种方法-

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步滞后的记录。

关于r - 循环遍历数据框中的列并根据 R 中的特定条件连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71215091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com