Ich versuche zu zählen, wie oft jedes Wort in einem Datenrahmen zu einem bestimmten Zeitpunkt auftritt. Hier ist mein Datenrahmen:Geschmolzenes Tabellenobjekt auf ursprünglichen Datenrahmen zurückbinden?
library(stringr)
df <- data.frame("Corpus" = c("this is some text",
"here is some more text text",
"more food for everyone",
"less for no one",
"something text here is some more text",
"everyone should go home",
"more random text",
"random text more more more",
"plenty of random text",
"the final piece of random everyone text"),
"Class" = c("X", "Y", "Y", "Y", "Y",
"Y", "Y", "Z",
"Z", "Z"),
"OpenTime" = c("12/01/2016 10:45:00", "11/07/2016 10:32:00",
"11/15/2015 01:45:00", "08/23/2012 1:23:00",
"12/17/2016 11:45:00", "12/16/2016 9:47:00",
"04/11/2015 04:23:00", "11/27/2016 12:12:00",
"08/25/2015 10:46:00", "09/27/2016 10:46:00"))
Ich versuche, diese Ergebnisse zu erhalten:
Class OpenTime Word Frequency
X 12/01/2016 10:45:00 this 1
X 12/01/2016 10:45:00 is 1
X 12/01/2016 10:45:00 some 1
X 12/01/2016 10:45:00 text 1
Y 11/07/2016 10:32:00 here 1
Y 11/07/2016 10:32:00 is 1
Y 11/07/2016 10:32:00 some 1
Y 11/07/2016 10:32:00 more 1
Y 11/07/2016 10:32:00 text 2
...
Ich würde gerne, dies zu tun, alle mit groupby
in dplyr
, aber ich habe noch nicht bekam, dass zur Arbeit . Stattdessen ist es das, was ich versucht habe:
splits <- strsplit(as.character(df$Corpus), split = " ")
counts <- lapply(splits, table)
counts.melted <- lapply(counts, melt)
Das gibt mir die transponierte Ansicht Ich mag:
> counts.melted
[[1]]
Var1 value
1 is 1
2 some 1
3 text 1
4 this 1
[[2]]
Var1 value
1 here 1
2 is 1
3 more 1
4 some 1
5 text 1
...
Aber wie kann ich diese Liste von geschmolzenem Vektoren wieder mit den Originaldaten binden zu produzieren die gewünschte Ausgabe oben? Ich versuchte, rep
zu verwenden, um den Class
Wert für so viele Wörter zu wiederholen, die es in jeder Reihe gab, aber hatten wenig Erfolg. Es wäre einfach, dies alles in einer for
Schleife zu tun, aber ich würde eher viel tun dies mit vektorisierten Methoden wie lapply
.
out.df <- data.frame("RRN" = NULL, "OpenTime" = NULL,
"Word" = NULL, "Frequency" = NULL)