通过“|”将重复行折叠成单行

collapse duplicate rows into a single row by "|"

我有一个如下所示的数据框:

# A tibble: 19 × 5
   Date       Country `Implementing Institution(s)`                                                    `Policy Tool(s)`                                        Magnitude
   <date>     <chr>   <chr>                                                                            <chr>                                                   <chr>    
 1 2020-05-14 Spain   Ministry of Economic Affairs and Digital Transformation,European Investment Bank Lending                                                 1.5      
 2 2020-05-28 Spain   European Investment Bank                                                         Lending                                                 250      
 3 2020-06-16 Spain   European Investment Bank                                                         Credit guarantees                                       576      
 4 2020-07-01 Spain   European Investment Bank                                                         Lending                                                 900      
 5 2020-07-01 Spain   European Investment Bank                                                         Credit guarantees                                       523      
 6 2020-09-01 Spain   Ministry of Labor and Social Economy                                             Grants                                                  16.8     
 7 2020-05-13 Spain   Development Bank of Latin America                                                Grants                                                  400      
 8 2020-10-13 Spain   Council of Ministers,Government                                                  Grants                                                  NA       
 9 2020-11-17 Spain   European Commission                                                              Lending                                                 4  

我想折叠“日期”列中存在“重复项”的行。也就是说,日期为 2020-07-01 的第 4 行和第 5 行应折叠成以下单行:

来自这里:

4 2020-07-01 Spain   European Investment Bank  Lending            900      
 5 2020-07-01 Spain   European Investment Bank Credit guarantees  523      

为此:

2020-07-01 Spain   European Investment Bank   Lending | Credit guarantees  900 | 523 

数据:

df <- structure(list(Date = structure(c(18396, 18410, 18429, 18444, 
18444, 18506, 18395, 18548, 18583, 18369, 18369, 18375, 18376, 
18474, 18396, 18403, 18619, 18705, 18717), class = "Date"), Country = c("Spain", 
"Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", 
"Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", 
"Spain", "Spain", "Spain", "Spain"), `Implementing Institution(s)` = c("Ministry of Economic Affairs and Digital Transformation,European Investment Bank", 
"European Investment Bank", "European Investment Bank", "European Investment Bank", 
"European Investment Bank", "Ministry of Labor and Social Economy", 
"Development Bank of Latin America", "Council of Ministers,Government", 
"European Commission", "Council of Europe Development Bank", 
"Council of Europe Development Bank", "Council of Europe Development Bank", 
"European Commission", "European Commission", "European Investment Bank", 
"European Investment Bank", "European Investment Bank", "Council of Europe Development Bank", 
"European Investment Bank"), `Policy Tool(s)` = c("Lending", 
"Lending", "Credit guarantees", "Lending", "Credit guarantees", 
"Grants", "Grants", "Grants", "Lending", "Lending", "Lending", 
"Lending", "Credit guarantees,Lending,Capital injections,Tax relief", 
"Capital injections", "Lending", "Lending", "Lending", "Lending", 
"Lending"), Magnitude = c("1.5", "250", "576", "900", "523", 
"16.8", "400", NA, "4", "200", "300", "334", NA, "10", "1.5", 
"600", "270", "50", "300")), row.names = c(NA, -19L), class = c("tbl_df", 
"tbl", "data.frame"))

您可以使用以下代码:

library(dplyr)
df %>%
  group_by(Date) %>% 
  summarise(across(everything(), ~ paste(unique(.x[!is.na(.x)]), collapse = "|"))) %>% 
  ungroup()

输出:

# A tibble: 16 × 5
   Date       Country `Implementing Institution(s)`                         `Policy Tool(s)` Magnitude
   <date>     <chr>   <chr>                                                 <chr>            <chr>    
 1 2020-04-17 Spain   Council of Europe Development Bank                    Lending          "200|300"
 2 2020-04-23 Spain   Council of Europe Development Bank                    Lending          "334"    
 3 2020-04-24 Spain   European Commission                                   Credit guarante… ""       
 4 2020-05-13 Spain   Development Bank of Latin America                     Grants           "400"    
 5 2020-05-14 Spain   Ministry of Economic Affairs and Digital Transformat… Lending          "1.5"    
 6 2020-05-21 Spain   European Investment Bank                              Lending          "600"    
 7 2020-05-28 Spain   European Investment Bank                              Lending          "250"    
 8 2020-06-16 Spain   European Investment Bank                              Credit guarante… "576"    
 9 2020-07-01 Spain   European Investment Bank                              Lending|Credit … "900|523"
10 2020-07-31 Spain   European Commission                                   Capital injecti… "10"     
11 2020-09-01 Spain   Ministry of Labor and Social Economy                  Grants           "16.8"   
12 2020-10-13 Spain   Council of Ministers,Government                       Grants           ""       
13 2020-11-17 Spain   European Commission                                   Lending          "4"      
14 2020-12-23 Spain   European Investment Bank                              Lending          "270"    
15 2021-03-19 Spain   Council of Europe Development Bank                    Lending          "50"     
16 2021-03-31 Spain   European Investment Bank                              Lending          "300"