Strsplit auf einer Spalte eines Datenrahmens [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Kommagetrennte Zeichenfolgen in einer Spalte in separate Zeilen aufteilen 4 Antworten

Ich habe eindata.frame wobei eine der Variablen ein Vektor (oder eine Liste) ist, wie folgt:

MyColumn <- c("A, B,C", "D,E", "F","G")
MyDF <- data.frame(group_id=1:4, val=11:14, cat=MyColumn)

#   group_id val    cat
# 1        1  11 A, B,C
# 2        2  12    D,E
# 3        3  13      F
# 4        4  14      G

Ich hätte gerne einen neuen Datenrahmen mit so vielen Zeilen wie der Vektor

FlatColumn <- unlist(strsplit(MyColumn,split=","))

was so aussieht:

MyNewDF <- data.frame(group_id=c(rep(1,3),rep(2,2),3,4), val=c(rep(11,3),rep(12,2),13,14), cat=FlatColumn)

#   group_id val cat
# 1        1  11   A
# 2        1  11   B
# 3        1  11   C
# 4        2  12   D
# 5        2  12   E
# 6        3  13   F
# 7        4  14   G

m Wesentlichen für jeden Faktor, der ein Element der Liste von @ iMyColumn (die Buchstaben A bis G) möchte ich die entsprechenden Werte der Liste zuweisen. Jeder Faktor erscheint nur einmal inMyColumn.

Gibt es einen guten Weg für diese Art des Umformens / Aufhebens / Zusammenführens? Ich habe mir ein sehr umständliches @ ausgedacfor -Schleife über die Zeilen vonMyDF un die Länge des entsprechenden Elements vonstrsplit(MyColumn,split=","). Ich bin mir sehr sicher, dass es einen eleganteren Weg geben muss.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage