我使用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创建
答案 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
此外,两个步骤都可以使用tidyverse
和separate_rows
和group_by
,summarise
df %>%
separate_rows(y) %>% # long format
group_by(x) %>%
summarise(y = toString(y)) # wide format