我想用R分析apache服务器的访问日志。我使用this script预处理数据,然后将其加载为csv,
rawdata <- read.csv("survey-log.csv")
我可能不得不将数据提供给第三方,因此,作为第一步,我想匿名访问服务器的人员的IP地址。我认为用已顺序分配的号码替换现有IP地址就足够了,因此很清楚哪两个请求来自同一个IP。
但我的第一个问题是,R似乎无法决定什么样的数据&#34; Host&#34;专栏是。
> str(rawdata)
'data.frame': 6475 obs. of 10 variables:
$ Host : Factor w/ 108 levels "::1","192.168.1.1",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Log.Name : Factor w/ 1 level "-": 1 1 1 1 1 1 1 1 1 1 ...
$ Date.Time : Factor w/ 2398 levels "2014-10-05 06:25:02",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Time.Zone : Factor w/ 1 level "GMT+0200": 1 1 1 1 1 1 1 1 1 1 ...
$ Method : Factor w/ 5 levels "CONNECT","GET",..: 4 4 4 4 4 4 4 4 4 4 ...
$ URL : Factor w/ 621 levels "/","*","/admin",..: 2 2 2 2 2 2 2 2 2 2 ...
$ Response.Code: int 200 200 200 200 200 200 200 200 200 200 ...
$ Bytes.Sent : int 152 152 152 152 152 152 152 152 152 152 ...
$ Referer : Factor w/ 190 levels "-","http://my-server
/limesurvey/",..: 1 1 1 1 1 1 1 1 1 1 ...
$ User.Agent : Factor w/ 65 levels "-","Apache/2.2.22 (Debian) (internal dummy connection)",..: 2 2 2 2 2 2 2 2 2 2 ...
我想,如果&#34; Host&#34;是一个因素,我可以用c(1:108)替换它的水平,这就是它。但是,问题在于它毕竟不是一个因素:
> b <- c(rawdata["Host"])
is.factor(b)
[1] FALSE
str(b)
List of 1
$ Host: Factor w/ 108 levels "::1","192.168.1.1",..: 1 1 1 1 1 1 1 1 1 1 ...
as.factor(b)
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
这里发生了什么?它是否是一个因素,我如何将其作为一个因素?
对不起,我无法提供数据样本,正如我所说,它还没有匿名化。