“撤消”使用stringr :: str_split创建的嵌套小标题

时间:2019-01-08 05:45:44

标签: r tidyr stringr

我使用stringr::str_split在R中创建了一个嵌套的小标题。从嵌套的小标题到“原始的”小标题,还有比我在下面介绍的解决方案更优雅的方法吗?

library(tidyverse)
# original tibble
df <- tibble(x = c("a", "b"),
             y = c("a1, a2", "b1, b2"))
df
#> # A tibble: 2 x 2
#>   x     y     
#>   <chr> <chr> 
#> 1 a     a1, a2
#> 2 b     b1, b2

# nested version
df_nested <- df %>% 
  mutate(y = str_split(y, ", "))
df_nested
#> # A tibble: 2 x 2
#>   x     y        
#>   <chr> <list>   
#> 1 a     <chr [2]>
#> 2 b     <chr [2]>

# to get back to original
mutate(df, y = unlist(lapply(y, paste0, collapse = ", ")))
#> # A tibble: 2 x 2
#>   x     y     
#>   <chr> <chr> 
#> 1 a     a1, a2
#> 2 b     b1, b2

reprex package(v0.2.1)于2019-01-07创建

1 个答案:

答案 0 :(得分:2)

我们可以使用map中的purrr

library(tidyverse)
df_nested %>% 
     mutate(y = map_chr(y, toString))
# A tibble: 2 x 2
#  x     y     
#  <chr> <chr> 
#1 a     a1, a2
#2 b     b1, b2

此外,两个步骤都可以使用tidyverseseparate_rowsgroup_bysummarise

来完成
df %>% 
  separate_rows(y) %>% # long format
  group_by(x) %>% 
  summarise(y = toString(y)) # wide format