使用R删除非日期条目所在的行

4

我有一个数据框,其中一列是(应该是)以00:00:00.0 yyyy-mm-dd的形式表示的日期。大多数条目都是,但有些不是。是否有一种方法可以删除包含非日期的行?如果列名为“DATE”,可以使用以下代码:

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

I want

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

3
请使用strptime将它们转换为日期时间格式,那些不是时间的部分会变成NA,因此可以轻松删除。 - joran
1个回答

4

按照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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接