2017-07-24 20 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) 
相關問題