我有这样的数据
> 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?
答案 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)