Skip to content

In separate_wider_delim(), allow for specifying the direction to split by delim in #1551

Open

Description

@olivroy

There is no way with separate wider delim to use the spaces from the end. The docs say to use separate_wider_regex(), but I wonder if the delim function could add an option.

Of course, a workaround is to construct a more complex regex and to use separate_wider_regex(), but that could become clunky?

 dplyr::tibble(
  col = c(
    "A label with space 1.0 2.31",
    "Non-space label 1.22 3.21"
  )
) |> 
  tidyr::separate_wider_delim(
    cols = col,
    delim = " ",
    names = c("label", "n1", "n2"),
    too_many = "merge"
  )
#> # A tibble: 2 × 3
#>   label     n1    n2                 
#>   <chr>     <chr> <chr>              
#> 1 A         label with space 1.0 2.31
#> 2 Non-space label 1.22 3.21

Created on 2024-05-01 with reprex v2.1.0

Activity

  1. DavisVaughan commented on Oct 24, 2024

    @DavisVaughan
    Member

    Seems like a reasonable feature request, another idea for now is to double reverse the string

    dplyr::tibble(
      col = c(
        "A label with space 1.0 2.31",
        "Non-space label 1.22 3.21"
      )
    ) |>
      dplyr::mutate(col = stringi::stri_reverse(col)) |>
      tidyr::separate_wider_delim(
        cols = col,
        delim = " ",
        names = c("n1", "n2", "label"),
        too_many = "merge"
      ) |>
        dplyr::mutate(dplyr::across(c(n1, n2, label), stringi::stri_reverse))
    #> # A tibble: 2 × 3
    #>   n1    n2    label             
    #>   <chr> <chr> <chr>             
    #> 1 2.31  1.0   A label with space
    #> 2 3.21  1.22  Non-space label

    Created on 2024-10-24 with reprex v2.1.1

  2. DavisVaughan commented on Oct 24, 2024

    @DavisVaughan
    Member

    I don't think it would go in too_many though, I think it would be a new argument to separate_wider_delim() like direction = c("forward", "backward") that specifies the direction to split by the delim in


    Need to keep in mind that delim is allowed to be stringr::regex() and friends, which may complicate things.

  3. changed the title [-]In `separate_wider_delim()`, could `merge` have an option for `too_many = "merge_end"`[/-] [+]In `separate_wider_delim()`, allow for specifying the direction to split by `delim` in[/+] on Oct 24, 2024
  4. DanChaltiel commented on Feb 7, 2025

    @DanChaltiel

    I don't think it would go in too_many though, I think it would be a new argument to separate_wider_delim() like direction = c("forward", "backward") that specifies the direction to split by the delim in

    Although, it would be natural to have too_many = c("error", "debug", "drop", "merge_start", "merge_end"), as it would be similar too_few = c("error", "debug", "align_start", "align_end").

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions