2016-03-31 10 views
2

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.` 
+0

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

+0

Danke! Ich werde den Beitrag jetzt bearbeiten, um dir eine Idee zu geben. – user6070714

+0

XML :: lesenHTMLTabelle? check out rvest Paket auch? – chinsoon12

Antwort

0

Gelöst

x < - str_locate (t, Agentname) callstatus < - substr (t, (x [2] +2), nchar (t))

Verwandte Themen