首页 文章

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

提问于
浏览
0

这个问题在这里已有答案:

我有这样的数据

> 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 .

How to transform a data.table like the above by splitting the values?

1 回答

  • 1

    我们可以按'col1'进行分组,并将'col2'拆分为 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)
    

相关问题