在下面的此玩具可复制示例中,我有一个带有两列的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'))
答案 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))}]