2012-04-05 7 views
0

Ich lese Daten über ein HTTP-Zugriffsprotokoll. Ich habe eine Datei mit Spalten für die IP-Adresse, das Jahr, den Monat, den Tag, die Stunde und die angeforderte URL. Ich lese die Datei wie folgt ein:Subsetting Datenrahmen in R nach dem Einlesen von Daten mit Scan

ipdata = scan(file="sample_r.log", what=list(ip="", year=0, month=0, day=0, hour=0, verb="", url="")) 

Dies scheint zu funktionieren. R-Studio sagt, dass ipdata eine Liste ist [7] und "Namen (ipdata)" gibt

[1] "ip" "year" "month" "day" "hour" "verb" "url" 

Damit kühl zu sein scheint. Ich wollte etwas Spaß machen, zum Beispiel einige Daten für eine bestimmte Stunde grafisch darstellen. Ich habe versucht, eine Teilmenge zu tun:

Diese Daten sieht bemerkenswert anders als der erste Datenrahmen. s ist eine Liste [297275] und die folgenden nicht richtig funktioniert:

> table(ipdata$verb) 

GET POST 
2870709 1596748 

> table(s$verb) 
character(0) 

Bin ich dazu den richtigen Weg zu gehen? In der Regel wickle ich meinen Datenrahmen in eine Tabelle() und katapuliere oder zeichne ihn dann mit einem Balken. Ist R ein guter Weg, dies zu tun? Ich möchte sagen "Zeige mir alle Top-URLs in Stunde 3", zum Beispiel. Oder "Wie oft wurde diese IP-Adresse pro Stunde angezeigt?"

aktualisieren Es sieht aus wie von read.table statt scan mit konnte ich einen Datenrahmen erhalten. Anscheinend gibt Scan eine Liste von Listen oder etwas zurück? Definitiv verwirrend zu einem n00b wie ich, aber ich fühle mich jetzt gut.

Antwort

0

Wenn Sie lief

dat <- as.data.frame(ipdata) 
str(dat) 

.... Sie wahrscheinlich, dass es das gleiche wie die Ergebnisse Ihrer read.table() Operation war ziemlich viel sehen würde. read.table ist ein Wrapper für scan und führt viele Formatierungen und Konsistenzprüfungen durch.

+0

Ah! Führt "read.table" im Wesentlichen ein "as.data.frame" aus, wenn es fertig ist? – Dave

+0

Nun, 'read.table' weist" data.frame "als die Klasse des zurückgegebenen Objekts zu. Es prüft viele Namen und Längen und Klassen, bevor es die Klasse zuweist. Gib einfach 'read.table' an deiner Konsole ein. Zusätzlich zu der Menge der Konsistenz Durchsetzung, werden Sie eine Wertschätzung dafür bekommen, warum es manchmal langsam ist. –

+0

Super, danke nochmal. Ich gewöhne mich immer noch an R und R Studio und habe gerade heute Morgen von der Hilfefunktion erfahren :) – Dave