【问题标题】:R Data.table to mutate a table with separated values in values of a column? [duplicate]R Data.table 用列值中的分隔值来改变表? [复制]
【发布时间】:2017-07-24 16:14:39
【问题描述】:

我有这样的数据

> 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 %&gt;% mutate(col1=strplit(...,";"), col2=strplit(...,";")) 之类的东西应该以 dplyr/tidyr 方式用于 data.frame 但现在是 data.table。

如何通过拆分值来转换上述数据表?

【问题讨论】:

    标签: r data.table dplyr tidyr


    【解决方案1】:

    我们可以按 'col1' 分组,然后用 strsplit 拆分 'col2'

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多