R Data.table用于改变列中值分隔值的表吗?

时间:2017-07-24 16:14:39

标签: r data.table dplyr tidyr

我有这样的数据

> a<-data.table(col1=c(1,2,3),col2=c("1;2","11;22","111;333"))
> a
   col1    col2
1:    1     1;2
2:    2   11;22
3:    3 111;333

我希望将其改为以下格式

   col1    col2  
1:    1     1
2:    2     11
3:    3     111
4:    1     2
5:    2     22
6:    3     333

a %>% mutate(col1=strplit(...,";"), col2=strplit(...,";"))这样的东西应该以dplyr / tidyr的方式用于data.frame但现在是data.table。

如何通过拆分值来转换像上面这样的data.table?

1 个答案:

答案 0 :(得分:1)

我们可以通过&#39; col1&#39;分开&#39; col2&#39;与strsplit

library(data.table)
a[, .(col2 = unlist(strsplit(col2, ';'))),col1]

splitstackshape使用cSplit

library(splitstackshape)
cSplit(a, 'col2', ';', 'long')

tidyverse使用separate_rows

library(tidyverse)
separate_rows(a, col2)