通过拆分可变数量的列值来延长Pivot R数据帧

  • 本文关键字:Pivot 数据帧 拆分 r
  • 更新时间 :
  • 英文 :


假设以下数据:

foo <- data.frame(
key=c('one', 'two', 'three'), val=c('a', 'b|c', 'd|e|f'),
stringsAsFactors = F)

看起来像

> foo
key   val
1   one     a
2   two   b|c
3 three d|e|f

我希望输出如下所示:

bar <- data.frame(key=c('one', 'two', 'two', 'three', 'three', 'three'),
val=c('a', 'b', 'c', 'd', 'e', 'f'),
stringsAsFactors = F)

看起来像

> bar
key val
1   one   a
2   two   b
3   two   c
4 three   d
5 three   e
6 three   f

伪代码可能是:通过管道(|)拆分val,但分成一个变量(未知)列数,然后枢轴更长。

建议吗?

理想情况下使用宇宙。

在我链接的问题中找到了答案。它看起来像这样:

bar <- foo %>% mutate(val=strsplit(val, "\|")) %>% unnest(val)

您可以嵌套和拆套,但实际上它不使用summarize():

foo %>% 
group_by(key) %>% 
summarize(val = unlist(str_split(val, pattern = "[|]"))) %>% 
ungroup()

最新更新