2017-07-24 64 views
0

我有这样R Data.table用于在列值中分隔值的表进行变异?

> 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

,我们可以通过 'COL1',并与strsplit

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

或者分拆 'COL2' 与splitstackshape使用separate_rows使用cSplit

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

或用tidyverse

library(tidyverse) 
separate_rows(a, col2) 
相关问题