Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 读取csv文件时解析日期格式_R_Data.table - Fatal编程技术网

R 读取csv文件时解析日期格式

R 读取csv文件时解析日期格式,r,data.table,R,Data.table,我正在使用data.table包读取csv文件 样本数据集: 结构(列表大小=c(4886L、4096L、84848L、518L、264158L、, 725963L、1340L、75264L、198724L),修改后的时间=c, “2008年8月21日03:54:28下午”、“2007年2月12日12:40:00下午”、“2006年8月22日02:12:03下午”, “2009年12月08日03:28:14下午”、“2008年9月29日03:45:21下午”、“2011年9月07日03:36:5

我正在使用
data.table
包读取csv文件

样本数据集:

结构(列表大小=c(4886L、4096L、84848L、518L、264158L、, 725963L、1340L、75264L、198724L),修改后的时间=c, “2008年8月21日03:54:28下午”、“2007年2月12日12:40:00下午”、“2006年8月22日02:12:03下午”, “2009年12月08日03:28:14下午”、“2008年9月29日03:45:21下午”、“2011年9月07日03:36:54上午”, “2011年7月28日下午05:09:58”、“2012年7月23日下午02:25:58”),访问时间=c(“2013年3月15日上午09:24:53”, “2009年5月12日04:45:41下午”、“2014年4月7日09:39:03上午”、“2007年12月25日06:48:18上午”, “2013年4月8日上午11:52:15”、“2011年5月17日上午8:48:40”、“2013年3月12日上午02:55:01”, “2014年6月7日04:21:28下午”、“2013年1月21日12:58:07下午”),contentid=c(“000000 285B7925F511B3159A72F80A4A”, “0000011afae4d1227c4df57b410ea52c”、“000001cec02017ca3eb81ddc4cd1c9ff”, “00000233565d1c17c3135a9504c455ca”、“000003020ba74b9d1b6075d3c1b8fcb3”, “0000034b98d29d84ce7b61ee68be7658”、“000004ed899e26ae1c9b1ece35a98af1”, “000005a09fd2eb706c5800eb06084160”、“0000060b9d552c35f281b5033dcfa1b4” )),row.names=c(NA,-9L),class=c(“data.table”,“data.frame” ),.internal.selfref=) 加载时,我可以指定要读取的列的类型,例如:

tble=fread(“sample.csv”,colClasses=c(Size=“numeric”,contentid=“character”))
我的问题是:

  • 在加载本身时,是否可以指定如何解析日期列,例如,我知道以后可以使用
    将日期列转换为.date(示例$AccessTime,“%b%d,%Y%H:%M:%S%p”)
    但我是否可以在加载时指定此格式,以便将该列读取为datetime列而不是字符
  • 编辑:在加载自身时指定此解析的目的是,我假设这将帮助csv更快地加载。(不确定假设是否正确)


    PS:注意,我必须使用
    data.table
    ,因为我的csv文件非常大~5GB。

    请参阅。(BTW,我不认为你的假设是正确的)。有什么可以解决你的问题吗?为了更快的串到日期转换,考虑<代码>任意时间< /代码>包,或者看到这里我同意@ 27×9…我不希望任何带分隔符的文件读取器运行得更快,甚至不会像将字符串就地转换为
    Date
    POSIXt
    那样快;充其量也会稍微慢一点。我希望这种就地转换与“读取文件+
    as.Date
    ”大致相同,在这种情况下,在读入过程中执行此转换的唯一优点是用于代码转换。我觉得解析器可能会更快。首先是内存分配(即不需要分配一个字符,然后再分配一个数字向量),然后还有一个事实,
    strtime()
    似乎很慢,这就是为什么会有这样的包。话虽如此,制作一个解析器来处理各种格式所需的时间将花费。。。有很多时间要做。相关的,现在确实读取了一些字符串作为IDate,但此POSIXct不计算在内。对于OP,我认为答案是否定的。