-1

I have a data.table like:

Cell    Num
a       1,2,3,4,5,6
b       7,8,9
c       10,11,12
d       13,14

I need to convert it to:

Num Cell
1   a
2   a
3   a
4   a
5   a
6   a
7   b
8   b
9   b
10  c 
11  c
12  c 
13  d
14  d

how can we break the table into the format required ?

Jaap
  • 81,064
  • 34
  • 182
  • 193
Archit gupta
  • 147
  • 1
  • 2
  • 11

1 Answers1

2

We can use cSplit

library(splitstackshape)
cSplit(df1, "Num", ",", "long")
#    Cell Num
# 1:    a   1
# 2:    a   2
# 3:    a   3
# 4:    a   4
# 5:    a   5
# 6:    a   6
# 7:    b   7
# 8:    b   8
# 9:    b   9
#10:    c  10
#11:    c  11
#12:    c  12
#13:    d  13
#14:    d  14

Or as @David Arenburg mentioned

library(data.table)
dt[, .(Num = strsplit(Num, ",")[[1]]), by = Cell]
akrun
  • 874,273
  • 37
  • 540
  • 662