且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在保留其他数据 R 的同时将具有多个值的多列转换为新行?

更新时间:2023-12-04 13:53:36

library(tidyverse)

example_df %>%
  mutate(across(everything(), str_split, pattern = "; ")) %>%
  pmap_dfr(tibble)

结果:

   deal_ids  acquirer_ids acquirer_names                                   acquirer_ownersh~ acquirer_country       acquirer_size
   <chr>     <chr>        <chr>                                            <chr>             <chr>                  <chr>        
 1 3020269MM 05MW2D-E     Cushman & Wakefield, Inc.                        Subsidiary        United States          Big          
 2 3020269MM 060Y79-E     Ontario Teachers' Private Capital                Subsidiary        Canada                 Big          
 3 3020269MM 07HJ6C-E     Pacific Alliance Equity Partners Ltd.            Subsidiary        ***              Big          
 4 3020269MM 0FT58G-E     TPG Real Estate Partners                         Subsidiary        United States          Big          
 5 3137144MM 0GVB8N-E     Jiangsu Aukura Smart Transmission Engineering T~ Public Company    China (People's Repub~ Big          
 6 3087938MM 05PYR2-E     City of Shanghai                                 Government        China (People's Repub~ Small        
 7 3087938MM 0H2MMQ-E     Hotels & Préférence SARL                         Subsidiary        France                 Small        
 8 3010412MM 0H3CG6-E     Business Empire Investments Ltd.                 Subsidiary        British Virgin Islands Big          
 9 3054942MM 0JK2T2-E     Profit Sky Corp Ltd                              Subsidiary        ***              Small        
10 441272MM  05G8Z3-E     BAIN CAPITAL LLC                                 Private Company   United States          Small        
11 441272MM  05L112-E     Huawei Technologies Co., Ltd.                    Private Company   China (People's Repub~ Small  

说明:在处拆分每一列;代码>.这将使每一列成为一个列表.

explanation: split each column at ; . This will make each column a list.

  deal_ids  acquirer_ids acquirer_names acquirer_ownership acquirer_country acquirer_size
  <list>    <list>       <list>         <list>             <list>           <list>       
1 <chr [1]> <chr [4]>    <chr [4]>      <chr [4]>          <chr [4]>        <chr [1]>    
2 <chr [1]> <chr [1]>    <chr [1]>      <chr [1]>          <chr [1]>        <chr [1]>    
3 <chr [1]> <chr [2]>    <chr [2]>      <chr [2]>          <chr [2]>        <chr [1]>    
4 <chr [1]> <chr [1]>    <chr [1]>      <chr [1]>          <chr [1]>        <chr [1]>    
5 <chr [1]> <chr [1]>    <chr [1]>      <chr [1]>          <chr [1]>        <chr [1]>    
6 <chr [1]> <chr [2]>    <chr [2]>      <chr [2]>          <chr [2]>        <chr [1]> 

pmap_dfr 获取此 data.frame 的行并将其传递给 tibble 并将所有内容绑定到 data.frame.

pmap_dfr takes rows of this data.frame and pass it to tibble and binds everything into data.frame.