0

HTTP アクセス ログに関するデータを読み込んでいます。IP アドレス、年、月、日、時間、および要求された URL の列を含むファイルがあります。私はこのようにファイルを読みました:

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

これはうまくいくようです。R-Studio は、ipdata はリスト [7] であり、"names(ipdata)" が返されると言っています。

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

それはクールに思えます。特定の時間のデータをグラフ化するなど、何か楽しいことをしたかったのです。私はサブセットをやってみました:

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

このデータは、最初のデータ フレームとは著しく異なります。s は list[297275] であり、以下は正しく機能しません:

> table(ipdata$verb)

GET    POST 
2870709 1596748 

> table(s$verb)
character(0)

私はこれを正しい方法で行っていますか?私が通常行うことは、データ フレームを table() でラップしてから、バープロットまたはドットプロットすることです。Rはこれを行う良い方法ですか?たとえば、「時間 3 のトップ URL をすべて表示して」と言いたいです。または「この IP アドレスは 1 時間に何回表示されましたか?」

更新read.table代わりに使用scanすることで、データフレームを取得できたようです。どうやらスキャンはリストのリストか何かを返しますか? 私のような初心者には間違いなく混乱しますが、今は気分がいいです。

4

1 に答える 1

0

走ったら

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

....おそらく、 read.table() 操作の結果とほぼ同じであることがわかります。read.tableのラッパーでscanあり、多くの書式設定と一貫性チェックを行います。

于 2012-04-05T16:20:24.503 に答える