我尝试分析医疗数据。我有一些具有特定实验室值的患者(数据框架1),并希望与他们的药物(数据框架2)相匹配。我的问题是:单个患者有时接受多种药物治疗,例如,患者1接受药物治疗;和";B"。我需要这个变量来分组我的统计分析。我怎么能分配/合并值从一个重复的列表变量(相同的患者id)?
输入数据示例:
df_1 <- data.frame(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9),
Labvalues = c(54, 86, 21, 56, 75, 96, 45, 78, 95))
df_2 <- data.frame(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3),
Meds = c("A", "B", "C", "D", "E", "F", "A", "C", "G", "B", "G"))
希望输出数据帧:
df_3 <- data.frame(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9),
Labvalues = c(54, 86, 21, 56, 75, 96, 45, 78, 95),
Meds = c("A;B", "B", "C;G", "D", "E", "F", "A", "C", "G"))
非常感谢你的帮助!
我尝试分配()函数和不同的联合函数,但它总是导致创建更多的行。但是我需要每个病人一排,因为我想研究药物对实验室值的影响,所以药物组合对我来说是相关的。
使用left_join
和group_by
+summarise
,您可以:
library(dplyr)
df_1 |>
left_join(df_2, by = "ID") |>
group_by(ID) |>
summarise(across(everything(), paste, collapse = ";"))
#> # A tibble: 9 × 3
#> ID Labvalues Meds
#> <dbl> <chr> <chr>
#> 1 1 54;54 A;B
#> 2 2 86 B
#> 3 3 21;21 C;G
#> 4 4 56 D
#> 5 5 75 E
#> 6 6 96 F
#> 7 7 45 A
#> 8 8 78 C
#> 9 9 95 G