如何使用类似 tidyverse 的函数在 R 中转换基于字符串模式的列?

问题描述 投票:0回答:1

我想从给定的下表数据创建两列。我希望第一列(例如 ID1)包含第一个“-”之前从左到右的所有字母或数字,第二列(ID2)包含从右到左开始第一个“-”之前的第一个字母或数字并将它们打印为字符。

val = c(1,2,3,4)
tor = c( "0001-NEW YORK , M.AVENUE, NY-U.S.A"  ,                                            
         "0023-cARAVAGGIO-MALTA"        ,                                              
         "009876-bUDAPEST-HUNGARY" ,NA)
DATA = tibble(val,tor)

结果表必须如下所示: |值| ID1 | ID2 | |:---- |:------:| -----:| | 1 | 0001|美国 | | 2 | 0023|马耳他 | | 3 | 009876 |匈牙利 | | 4 |不适用 |不适用 |

r string dataframe
1个回答
0
投票

使用

separate_wider_delim()
的可能方法:

library(tidyverse)

val = c(1,2,3,4)
tor = c( "0001-NEW YORK , M.AVENUE, NY-U.S.A"  ,                                            
         "0023-cARAVAGGIO-MALTA"        ,                                              
         "009876-bUDAPEST-HUNGARY" ,NA)
DATA = tibble(val,tor)

DATA |> 
  separate_wider_delim(tor, delim = "-", names = c("ID1", "Not Needed", "ID2"))
#> # A tibble: 4 × 4
#>     val ID1    `Not Needed`            ID2    
#>   <dbl> <chr>  <chr>                   <chr>  
#> 1     1 0001   NEW YORK , M.AVENUE, NY U.S.A  
#> 2     2 0023   cARAVAGGIO              MALTA  
#> 3     3 009876 bUDAPEST                HUNGARY
#> 4     4 <NA>   <NA>                    <NA>

创建于 2024-04-03,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.