将R中的id-“ dump-var”数据解开(奇怪的整形)到R中的long data.frame / table

时间:2019-06-03 21:48:16

标签: r data.table reshape

在下面的此玩具可复制示例中,我有一个带有两列的data.frame。

  • id
  • dump:一个字符串变量,它充当id一堆特征的“转储”,并且每行中可以具有任意数量的元素。在dump中,特征用“;”分隔。 (obs:dump是Postgresql所说的,不知道它是本机R术语)。

    库(数据表)
    original_data <-data.table(id = 1:3,dump = c('a; b; c','x','t,y'))

我想将其重整为整齐的格式,每对id特性对使用一行。最好是用于性能的数据表解决方案。

这是所需的输出

desired_data <- data.table(id=c(1,1,1,2,3,3),unduped=c('a','b','c','x','t','y'))

1 个答案:

答案 0 :(得分:0)

我们可以使用separate_rows

library(tidyr)
library(dplyr)
library(data.table)
original_data %>%
      separate_rows(dump)

或使用strsplit

original_data[, {tmp <- strsplit(dump, "[;,]")
     .(id = rep(id, lengths(tmp)), unduped = unlist(tmp))}]