エクセルなどで、1セル中に複数の項目が入ったデータを処理することがあると思います。基本的にはdplyr::separate
で処理すればいいと思いますが、格納されている数が不定な場合、また何個あるかわからない場合に上手く処理できる関数を知らなかったのです。
r-wakalangで聞いたら、Rおじさんたちが優しく教えてくれました。備忘録も兼ねて記事にしておきます。
data.frame(Subject = c("A","B","C","D"),
Value = c("a+b+c", "c","b+c", "a+b+c+d+e"))
str_split()
からのunnest()
demo <- data.frame(Subject = c("A","B","C","D"),
Value = c("a+b+c", "c","b+c", "a+b+c+d+e"))
demo %>%
group_by(Subject) %>%
mutate(Value = str_split(Value, '\\+')) %>%
unnest()
# Groups: Subject [4]
Subject Value
<fct> <chr>
1 A a
2 A b
3 A c
4 B c
5 C b
6 C c
7 D a
8 D b
9 D c
10 D d
11 D e
tidyr::separate_rows()
library(tidyverse)
demo <- data.frame(Subject = c("A","B","C","D"),
Value = c("a+b+c", "c","b+c", "a+b+c+d+e"))
demo %>%
tidyr::separate_rows(Value, sep = "\\+")
Subject Value
1 A a
2 A b
3 A c
4 B c
5 C b
6 C c
7 D a
8 D b
9 D c
10 D d
11 D e
教えていただいた方々、どうもありがとうございました!