R-code:给一个已经存在的数据框架分配一个重复的变量



我尝试分析医疗数据。我有一些具有特定实验室值的患者(数据框架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_joingroup_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

最新更新