数据框看起来像这样
**NAME** | MONTH
jana| 19-25| jan,mar,sep,dec
pugal| 45-50| april,may,june
--
我希望我的答案应该看起来
jana| 19-25| jan
jana| 19-25| mar
jana| 19-25| sep
jana| 19-25| dec
pugal| 45-50| april
pugal| 45-50| may
pugal| 45-50| june
答案 0 :(得分:-1)
这就是你想要的
n=c("jana| 19-25| jan,mar,sep,dec", "pugal| 45-50| april,may,june")
df = data.frame(n)
a=data.frame(do.call(rbind, strsplit(as.character(df$n),'|',fixed=TRUE)))
b=as.data.frame(do.call(rbind, apply(a, 1, function(x) { do.call(expand.grid, strsplit(x, " *, *"))})))
答案 1 :(得分:-1)
separate_rows
可以做到这一点:
library(tidyr)
DF %>% separate_rows(MONTH)
结果是:
NAME RANGE MONTH
1 jana 19-25 jan
2 jana 19-25 mar
3 jana 19-25 sep
4 jana 19-25 dec
5 pugal 45-50 april
6 pugal 45-50 may
7 pugal 45-50 june
注意:问题中显示的输入数据有两个列标题,但有三列,所以我们改用了它:
Lines <- "NAME | RANGE | MONTH
jana| 19-25| jan,mar,sep,dec
pugal| 45-50| april,may,june"
DF <- read.table(text = Lines, header = TRUE, sep = "|", strip.white = TRUE)