这是一个因素吗?

时间:2014-10-17 08:54:14

标签: r csv type-conversion

我想用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?

这里发生了什么?它是否是一个因素,我如何将其作为一个因素?

对不起,我无法提供数据样本,正如我所说,它还没有匿名化。

0 个答案:

没有答案