根据r中的多个ID组合行值



我有一个dataframedf,其示例如下所示。我需要通过study_idlab_study_dtlab_study_time来组合行,并且在由这三个关键变量分组的同一行上具有跨实验室和检测限的NA和非NA值。

group by和summarise_all我试着这样做,但没有得到结果我在找。

df %>%
group_by(study_id,lab_study_dt,lab_study_time) %>%
summarise_all(funs(toString(na.omit(.))))
<表类>study_idlab_study_dtlab_study_timelab_polyslab_lymphslab_monolab_eoslab_basoslab_bandslab_wbc_countlab_rbc_countprotein_limit_of_detectionlab_proteingluc_limit_of_detectionlab_glucosetbody><<tr>简8/13/20110:12NANANANANANA1NANANANANA简8/13/20110:12NANANANANANANANANANANANA简3/4/201315:27NA60NANANANANANANANANANA简3/4/201315:27NANANANANANANA10000NANANANA简3/4/201315:278NANANANANANANANANANANA简3/4/201315:27NANANANANA1NANANANANANA简3/4/201315:27NANANANANANA149NANANANANA简3/4/201315:27NANA31日NANANANANA156NANA乔治4/20/202121:18NA60NANANANANANANANANANA乔治4/20/202121:18NANANANANANANA10000NANANANA乔治4/23/202115:278NANANANANANANANANA23乔治4/23/202127NA65NANANANANANA1祝辞10NANA乔治4/23/202127NANANANANA1149NANANANANA乔治4/23/202127NANA31日NANANANA56NANANANA

我们可以按id/dt/time分组,然后在所有列(即everything())上使用tidyr::fill来获取任何非na值,并首先通过任何NAs向下复制它们,然后通过任何NAs向上复制它们("downup",我的任意选择)。最后,我们可以在每个组中只保留第一个切片,然后删除分组。

library(tidyverse)    
df %>%
group_by(study_id,lab_study_dt,lab_study_time) %>%
fill(everything(), .direction = "downup") %>%
slice(1) %>%
ungroup()

这是您期望的输出吗?

# A tibble: 5 × 15
study_id lab_study_dt lab_study_time lab_polys lab_lymphs lab_mono lab_eos lab_basos lab_bands lab_wbc_count lab_rbc_count protein_limit_of_detection lab_protein gluc_limit_of_detecti… lab_glucose
<chr>    <chr>        <chr>              <int>      <int>    <int> <lgl>   <lgl>         <int>         <int>         <int>                      <int> <chr>                        <int>       <int>
1 George   4/20/2021    21:18                 NA         60       NA NA      NA               NA            NA         10000                         NA NA                              NA          NA
2 George   4/23/2021    12:27                 NA         65       31 NA      NA                1           149            56                          1 >10                             NA          NA
3 George   4/23/2021    15:27                  8         NA       NA NA      NA               NA            NA            NA                         NA NA                               2           3
4 Jane     3/4/2013     15:27                  8         60       31 NA      NA                1           149         10000                          1 56                              NA          NA
5 Jane     8/13/2011    0:12                  NA         NA       NA NA      NA               NA             1            NA                         NA NA                              NA          NA

最新更新