【问题标题】:R: Find and delete line with specific dateR:查找并删除具有特定日期的行
【发布时间】:2019-09-11 12:26:46
【问题描述】:

我对 R 很陌生。 这是我的问题: 我有一个包含 100k 行的巨大 .txt 文件, 任务是删除所有包含日期​​晚于(例如,本月)的行。

日期格式为%Y-%m-%dT%H:%M:%S.%f+00:00

一行示例,但它可能包含非恒定数量的单词:INFO: 2018-11-21T09:53:55.467550+00:00 (none) setaupasqa[12]: 0012f73ad1a26

我已经尝试过这种方法(日期时间函数)来查找日期,但似乎它不起作用

Date <- read.delim("my_data.txt")
Date <- as.POSIXct(Date, format= "%Y-%m-%dT%H:%M:%S.%f+00:00", tz="UTC")
as.POSIXlt(Date)$year + 1900 

提前致谢。

【问题讨论】:

    标签: r date posixct


    【解决方案1】:

    您可以为此使用lubridate。 示例:

    library(data.table)
    library(dplyr)
    df <- fread("sample.txt", header = F)
    df$V2 <- lubridate::ymd_hms(df$V2)
    
    #Filter all rows with month >= 11
    df %>%
      filter(month(V2) >= 11)
    V1                  V2     V3              V4            V5
    1 INFO: 2018-11-22 09:53:55 (none) setaupasqa[12]: 0012f73ad1a26
    

    样本数据

    $ cat sample.txt
    INFO: 2018-10-21T09:53:55.467550+00:00 (none) setaupasqa[12]: 0012f73ad1a26
    INFO: 2018-11-22T09:53:55.467550+00:00 (none) setaupasqa[12]: 0012f73ad1a26
    

    【讨论】:

    • 非常感谢您的帮助,但我在解析文件时遇到问题,原因是我的行数从 4 到 20 个字不等:&gt; df &lt;- fread("full-17-04(33%).log", header = F) Warning message: In fread("full-17-04(33%).log", header = F) : Stopped early on line 10. Expected 2 fields but found 15. Consider fill=TRUE and comment.char=. ... &gt; df$V2 &lt;- lubridate::ymd_hms(df$V2) Warning message: All formats failed to parse. No formats found. 有什么建议可以解决吗?
    • 数据中的所有行是否都遵循相同的格式?
    • 不,在不同的,相同的甚至不包含“日期”例如:```警告:跳过超时检查摘要:``
    猜你喜欢
    • 2018-06-20
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2022-11-01
    • 2014-11-12
    • 1970-01-01
    相关资源
    最近更新 更多