Imagine j'ai une donnée R.table avec la colonne de chaîne suivante: Je souhaite séparer chaque chaîne par point-virgule et écrivez-la dans de nouvelles colonnes ( Quel est le moyen à jeun de faire cela compte tenu de savoir que j'ai une donnée avec 100k + rangées? < / p> p> a, b, c , d, e, f code>) comme ceci: p>
3 Réponses :
Un moyen d'utiliser dplyr code> et
titsyr code>
DT <- fread( "string a1; b: b1, b2, b3; c: c1, c2, c3 a1; b: b2, b3, b4; c: c1, c2, c3; d: d1, d2, d3 a2; b: b1, b2, b3; c: c2, c5, c6; d: d1, d2, d3; e: e2, e3, e4 a5; b: b5, b6, b7; c: c1, c2, c3; d: d1, d2, d3 a6; b: b1, b2, b3; c: c1, c4, c5; d: d1, d2, d3; e: e1, e2, e3; f: f1, f2, f3", sep = "\n" )
Nous pouvons utiliser csplit code> à partir de
SplitStackshape CODE>
DT <- structure(list(string = c("a1; b: b1, b2, b3; c: c1, c2, c3",
"a1; b: b2, b3, b4; c: c1, c2, c3; d: d1, d2, d3", "a2; b: b1, b2, b3; c: c2, c5, c6; d: d1, d2, d3; e: e2, e3, e4",
"a5; b: b5, b6, b7; c: c1, c2, c3; d: d1, d2, d3", "a6; b: b1, b2, b3; c: c1, c4, c5; d: d1, d2, d3; e: e1, e2, e3; f: f1, f2, f3"
)), row.names = c(NA, -5L), class = "data.frame")
Avez-vous des idées vous-mêmes que vous avez essayé mais que vous êtes trop lent?