Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
olivroy opened this issue May 1, 2024 · 2 comments
Labels
feature a feature request or enhancement strings 🎻

Comments

@olivroy
Copy link
Contributor

olivroy commented May 1, 2024

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

@DavisVaughan
Copy link
Member

DavisVaughan commented Oct 24, 2024

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

@DavisVaughan
Copy link
Member

DavisVaughan commented Oct 24, 2024

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.

@DavisVaughan DavisVaughan 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 Oct 24, 2024
@DavisVaughan DavisVaughan added feature a feature request or enhancement strings 🎻 labels Oct 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature a feature request or enhancement strings 🎻
Projects
None yet
Development

No branches or pull requests

2 participants