Apache read.table并将函数应用于列
我正在使用read.table读取apache日志文件,我想知道是否有可能在导入数据时应用函数(即strtime),而不是对其进行后处理 请提供更多详细信息: 包含日期的列的格式为:Apache read.table并将函数应用于列,apache,class,r,Apache,Class,R,我正在使用read.table读取apache日志文件,我想知道是否有可能在导入数据时应用函数(即strtime),而不是对其进行后处理 请提供更多详细信息: 包含日期的列的格式为: [10/Nov/2011:06:25:14 我可以使用以下方法成功解析它: strptime(red[1,4],format="[%d/%b/%Y:%H:%M:%S") 或 但是 失败了。因此,我无法在colClasses AFAIK中使用POSIXct。或许可以为日志定义所需的格式。因此,如果数据格式良好,则
[10/Nov/2011:06:25:14
我可以使用以下方法成功解析它:
strptime(red[1,4],format="[%d/%b/%Y:%H:%M:%S")
或
但是
失败了。因此,我无法在colClasses AFAIK中使用POSIXct。或许可以为日志定义所需的格式。因此,如果数据格式良好,则无需对其进行后处理
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
http://httpd.apache.org/docs/2.0/mod/mod_log_config.html您可以为日志定义所需的格式,而不是这样。因此,如果数据格式良好,则无需对其进行后处理
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
http://httpd.apache.org/docs/2.0/mod/mod_log_config.html如果存在
as.
方法,则可以将colClasses与该类一起使用。由于Date是一个类,默认格式为YYYY-MM-DD,因此如果您的日期是该格式,则可以在colClasses
向量中包含日期。还可以将新的定义为.function
。和往常一样,你提供的关于问题的细节越多,答案就越好
library(methods)
setClass("logDate")
#[1] "logDate"
setAs("character", "logDate", function(from)
as.POSIXct(from, format="[%d/%b/%Y:%H:%M:%S"))
DF <- read.table(text="[10/Nov/2011:06:25:14", header = FALSE,
colClasses = c("logDate"))
str(DF)
#'data.frame': 1 obs. of 1 variable:
# $ V1: POSIXct, format: "2011-11-10 06:25:14"
库(方法)
setClass(“日志日期”)
#[1] “日志日期”
setAs(“字符”、“日志日期”、函数(从)
as.POSIXct(from,format=“[%d/%b/%Y:%H:%M:%S”))
DF如果有as.
方法,您可以将colClasses与该类一起使用。由于Date是一个类,默认格式为YYYY-MM-DD,如果您的日期是该格式,您可以只在colClasses
向量中包含日期。还可以将新的as.函数定义为
。一如既往,您提供的日期越详细关于这个问题,答案越好
library(methods)
setClass("logDate")
#[1] "logDate"
setAs("character", "logDate", function(from)
as.POSIXct(from, format="[%d/%b/%Y:%H:%M:%S"))
DF <- read.table(text="[10/Nov/2011:06:25:14", header = FALSE,
colClasses = c("logDate"))
str(DF)
#'data.frame': 1 obs. of 1 variable:
# $ V1: POSIXct, format: "2011-11-10 06:25:14"
库(方法)
setClass(“日志日期”)
#[1] “日志日期”
setAs(“字符”、“日志日期”、函数(从)
as.POSIXct(from,format=“[%d/%b/%Y:%H:%M:%S”))
DF我正计划这样做,但我有很多遗留数据需要管理。可能现有日志上的一些sed/awk对您的情况会有所帮助。我正计划这样做,但我有很多遗留数据需要管理。可能现有日志上的一些sed/awk对您的情况会有所帮助。编写一个简单地同时完成这两个任务的函数(先读取文件,然后处理列)在功能上是等效的。由于要处理的数据很多,我正在尽可能提高效率。为什么您认为调用read.table,然后手动执行日期强制的函数效率会很低?如果您采取了这一路线,您现在可能已经完成了。;)我强烈建议将读取
和清除
操作分开。如果您返回并意识到存在错误,篡改原始
数据可能会给您带来很大的痛苦。不确定其他用户是怎么想的,但我认为一个好的工作流程会将两者分开。以及@joran表示,我不认为这会降低效率。编写一个同时执行这两项任务的函数(读取文件,然后处理列)在功能上是等效的。由于要处理的数据很多,我正在尽可能地提高效率。为什么您认为调用read.table然后手动执行日期强制的函数效率会很低?如果您采用了这种方法,您现在可能已经完成了。;)我强烈建议保留read
和clean
操作是分开的。如果你回去发现有一个bug,在没有保存的情况下篡改原始数据会给你带来很大的痛苦。不确定,其他用户怎么想,但我认为一个好的工作流程会将两者分开。正如@joran所指出的,我不认为这会降低效率。我“我编辑了问题以添加更多详细信息,谢谢你的输入。谢谢。我会轻松解决问题。从R 2.14开始,你可以使用text
参数,使textConnection
与read.table
过时。FWIW.:)我编辑了问题以添加更多详细信息,谢谢你的输入。谢谢。我会轻松解决问题。”x、 从R2.14开始,您可以使用text
参数,使textConnection
与read.table
结合使用,从而使.FWIW.)