2012-04-05 5 views
0

HTTPアクセスログに関するデータを読み込んでいます。私はIPアドレス、年、月、日、時間と要求されたURLの列を持つファイルを持っています。私はこのようにファイルを読む:スキャンでデータを読み込んだ後にRでデータフレームをサブセット化する

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

これは動作するようです。 R-Studioは、[7] IPDATAがリストであると言うと、 "名前(IPDATA)" だから、クールなようだ

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

を返します。特定の時間のグラフを作成するなど、楽しいことをしたいと思っていました。サブセットを作成しようとしました:

s <- subset(ipdata, ipdata$hour==3) 

このデータは最初のデータフレームとは大きく異なります。 sが[297275]リストで、以下の権利は動作しません:

> table(ipdata$verb) 

GET POST 
2870709 1596748 

> table(s$verb) 
character(0) 

私はこれについて、正しい道を進んでいますか?私が一般的にしているのは、データフレームをテーブル()にラップして、バープロットまたはドットプロットすることです。 Rはこれを行う良い方法ですか?たとえば、「トップ3のすべてのURLを時間3で表示」としたいとします。または、「このIPアドレスは1時間に何回表示されましたか?」

更新scanの代わりにread.tableを使用したようです。データフレームを取得できました。明らかにscanはリストのリストを返しますか?間違いなく自分自身のようなn00bに混乱するが、私は今それについて良い気分だ。

答えて

0

あなたは

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

を実行した場合は....あなたは、おそらくそれはかなりあなたのread.tableを()操作の結果と同じであったことがわかります。 read.tablescanのラッパーであり、多くの書式設定と一貫性チェックを行います。

+0

Ah! 'read.table'は基本的に" as.data.frame "を行いますか? – Dave

+0

まあ、 'read.table'は返されたオブジェクトのクラスとして" data.frame "を割り当てます。それは、クラスを割り当てる前に、名前と長さとクラスをチェックします。あなたのコンソールに 'read.table'と打つだけです。一貫性の執行の量を見ることに加えて、なぜそれが時には遅いのかについての感謝を得るでしょう。 –

+0

素晴らしいです、もう一度ありがとうございます。私はまだRとR Studioに慣れていて、ちょうど今朝はヘルプ機能について学んだ:) – Dave

関連する問題