【问题标题】:R remove rows where an entry is not a dateR删除条目不是日期的行
【发布时间】:2012-10-04 00:42:05
【问题描述】:

我有一个数据框,其中一列是(应该是)00:00:00.0 yyyy-mm-dd 形式的日期。大多数条目是,但有些不是。有没有办法删除包含非日期的行?类似的东西(如果列是“日期”)

data <- data[is.Date(DATE)==TRUE,]

例如。

Fruit  Date
apple  00:00:00.0 2005-02-01
pear   00:00:00.0 2006-02-01
orange 00:00:00.0 -8-2-402145
rhino  00:00:00.0 2003-04-21

我想要

Fruit  Date
apple  00:00:00.0 2005-02-01
pear   00:00:00.0 2006-02-01
rhino  00:00:00.0 2003-04-21

【问题讨论】:

  • 您能否使用strptime 将它们转换为日期时间格式,然后任何“不是”时间的东西最终都会变成NA,因此很容易删除。

标签: r date


【解决方案1】:

按照joran的推理:

# get the test data
test <- data.frame(
    Fruit=c("apple","pear","orange","rhino"),
    Date=c("00:00:00.0 2005-02-01",
           "00:00:00.0 2006-02-01",
           "00:00:00.0 -8-2-402145",
           "00:00:00.0 2003-04-21")
)

# remove the rows by checking if not (!) an NA due to not meeting the date format
test[!is.na(strptime(test$Date,format="00:00:00.0 %Y-%m-%d")),]

结果:

  Fruit                  Date
1 apple 00:00:00.0 2005-02-01
2  pear 00:00:00.0 2006-02-01
4 rhino 00:00:00.0 2003-04-21

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    相关资源
    最近更新 更多