Ich bin relativ neu in R, also bitte nehmen Sie es mir einfach.R - Split 1 Spalte Reihe von mehreren Werten in Datenrahmen
Ich töte mich selbst versuchen, dies herauszufinden.
Ich habe einen riesigen Textblock, den ich von einer Website gekratzt habe. Es sieht ungefähr so aus (ich habe einige der Informationen für die Privatsphäre willen geändert):
> theText99
499737 2016-03-31 10:37:29 00:00:32 SALES WORD INITIATIVE 160915 123456789101
Person Name Completed\n499731 2016-03-31 10:36:50 00:13:50 SALES NON WORD
INITIATIVE 160915 1234567891013 Woman Name Completed\n499726 2016-03-31
10:36:29 00:07:57 SALES NON WORD INITIATIVE 160915 123456789101 Someone Berry
Completed\n499672 2016-03-31 10:29:13 00:00:09 SALES WORD INITIATIVE 160915
123456789101 Person Carr Completed\n499654 2016-03-31 10:27:16 00:00:09 SALES
WORD INITIATIVE 160915 123456789101 Person Carr Completed\n499609 2016-03-31
10:18:36 00:11:06 SALES WORD INITIATIVE 160915 123456789101 Person Carr
Completed\n499601 2016-03-31 10:16:29 00:10:34 SALES WORD INITIATIVE 160915
123456789101 FirstName Kang Completed\n499568 2016-03-31 10:10:39 00:02:31
SALES NON WORD INITIATIVE 160915 123456789101 Person Carr Completed\n499548
2016-03-31 10:06:40 00:07:15 SALES WORD INITIATIVE 160915 1234567891011 Pat
Laugh Completed\n499508 2016-03-31 09:56:34 00:02:51 SALES WORD INITIATIVE
160915 123456789101 Mark LastName Completed\n499499 2016-03-31 09:54:33
00:00:08 SALES WORD INITIATIVE 160915 123456789101 Woman Name
Completed\n499490 2016-03-31 09:53:04 00:04:28 SALES WORD INITIATIVE 160915
123456789101 Person Name Completed
Mein Ziel ist es, diese Daten in einen Datenrahmen zu analysieren.
Ich habe so viel erreicht:
> library(stringr)
> t <- str_split(theText99, "\\n")
, die in einem schönen Satz von ausgekleideten Text führt ..
[1] "499737 2016-03-31 10:37:29 00:00:32 SALES THING INITIATIVE 160915 123456789101 First Name Completed"
[2] "499731 2016-03-31 10:36:50 00:13:50 SALES THINGY INITIATIVE 160915 123456789101 Chelsea Hello Completed"
[3] "499726 2016-03-31 10:36:29 00:07:57 SALES THINGY INITIATIVE 160915 123456789101 Nice Name Completed"
Legen Sie es in einen Datenrahmen Denken war ich irgendwo bekommen:
> x <- as.data.frame(t)
> t <- x[1,] # To Test on the first row
> library(stringi)
> library(stringr)
> t <- as.character(t)
> callId <- str_extract(t, "^[0-9]{6}")
> callId
[1] "499737"
> callDate <- str_extract(t, "[0-9\\-]{10}")
> callDate
[1] "2016-03-31"
> callDuration <- str_extract(t, "[0-9\\:?]{8}")
> callDuration
[1] "10:37:29"
> callInitiative <- str_extract(t, "([A-Z]...+[A-Z]+...[0-9]+)")
> callInitiative
[1] "SALES BLAHBLAH INITIATIVE 160915"
> phoneNumber <- str_extract(t, "(\\d){7,}")
> phoneNumber
[1] 123456789101
> agentName <- str_extract(t, "([A-Z][a-z]+ [A-Z][a-z]+)")
> agentName
> FirstName LastName
Wer weiß, ob dieser Code hält ... Th Die Länge einiger Variablen ändert sich von Zeit zu Zeit.
Meine Frage Die letzte große von Text, in jeder Zeile, häufig ändert:
Zum Beispiel: [3] „499726 2016-03-31 10:36:29 00:07:57 SALES THINGY INITIATIVE 160.915 123.456.789.101 Nizza Name "
[3] "499726 2016-03-31 10:36:29 00:07:57 SALES THINGY INITIATIVE 160.915 123.456.789.101 Nizza Name noch aussteht Entscheidung"
abgeschlossen[3] "499726 2016-03-31 10:36:29 00:07:57 SALES THINGY INITIATIVE 160.915 123.456.789.101 Nizza Name Für eine weitere Quelle von Stuff Suche"
Was ist der beste Weg zu spalten all diese Infos?
Ich denke, ich könnte zu viel Arbeit machen, wenn ich Strings spalte ... Ist das ein besserer Weg?
Die meisten Einzelteile bleiben relativ gleich lang:
499.726-6 Zahlen 2016.03.31 - Same Datumsformat 10.36.29 - Same Zeitformat 00: 07.57 - Gleiche Zeitformat SALES THINGY INITIATIVE 160.915-Dies ändert sich, aber es ist alles TEXT mit einer Nummer am Ende 123.456.789.101-Telefonnummer, bleibt gleich lang Netter Name - Name der Person. Vorname, Nachname Fertiggestellt - Dieses Feld ändert sich. Von 1 Wort bis 5 Wörter.
Jeder Hinweis wäre stark geschätzt.
Danke!
EDIT
Ich suche für die Informationen in Spalten als solche zu gehen:
Beispiel String: 499726 2016-03-31 10:36:29 00:07:57 SALES THINGY INITIATIVE 160.915 123.456.789.101 Nizza Name Completed
Spalten:
df <- data.frame(callID = 499726,
callDate = "2016-03-31",
callTime = "10:36:29",
callDuration = "00:07:57",
callInitiative = "SALES THINGY INITIATIVE 160915",
phoneNumber = "123456789101",
agentName = "Nice Name",
callStatus = "Completed")
## REemember, the data in this column could be anything from 'completed' to
## Awaiting More Info' to 'Call Back Tomorrow' to 'Is Unaware of Anything
## We're Saying' (etc)...From a string splitting perspective, this is
## the last one that's giving me issues.`
was genau sind die Spalten, die Sie erwarten in Ihr Dataframe durch die Verarbeitung des Textes, können Sie bitte die Probe-Ausgabe, die Sie erwarten, so dass ich versuchen kann, zu helfen. – Dinesh
Danke! Ich werde den Beitrag jetzt bearbeiten, um dir eine Idee zu geben. – user6070714
XML :: lesenHTMLTabelle? check out rvest Paket auch? – chinsoon12