【问题标题】:Subset of time data时间数据子集
【发布时间】:2012-11-20 18:20:28
【问题描述】:

我正在尝试基于 POSIXct 变量创建一个简单的 df 子集,但它不起作用...

a2001 <- subset(anillas, anillas$data=="21-03-2001")

它给出“0 obs. of 74 variables”

这些变量有什么不同吗?

Tks.

好的,这是str(anillas)的一部分

 $ rc          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ ss          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ tg          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ ug          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ data        : POSIXct, format: "2001-03-21" "2001-03-23" ...

【问题讨论】:

  • 请将dput(head(anillas)) 的输出添加到您的问题中。另外,请参阅stackoverflow.com/questions/5963269/…
  • dput 显示了一个非常长的列表,因此我需要一些时间来准备一个简短的列表(根据您的建议)(我只是从 R 开始)
  • subset(annillas, anillas$data == "21-03-2001")中的日期格式与anillas$data中的日期格式不同的问题吗?尝试which (anillas$data=="21-03-2001") 看看是否有任何返回。如果没有,请使用which(anillas$data=="2001-03-21") 重试。我怀疑a2001 &lt;- subset(anillas, anillas$data=="2001-03-21") 可能会做你想做的事。
  • 在这两种情况下我都得到integer(0),使用原始的英国日期格式和美国格式

标签: r time subset


【解决方案1】:

您必须与可比较的东西进行比较。在您的尝试中,您将POSIXct 对象与character 字符串进行了比较。
您需要首先将您想要子集anillas 的日期转换为POSIXct

date1 <- strptime("21-03-2001","%d-%m-%Y")
a2001 <- subset(anillas, data==date1)

【讨论】:

  • 他们的数据没有问题,他们所展示的也不是不可能的。如果时间正好是午夜,则默认不打印时间。例如:str(as.POSIXct("2012-11-21",tz="GMT")).
  • @JoshuaUlrich 很公平,我不知道(老实说,以前从未遇到过这种情况,并认为它会打印00:00:00)。我试图复制它,但我匆忙没有指定tz="GMT",因此01:00:00
  • 我创建了 date1,然后创建了子集...但 a2001 仍然是 0 obs of 74 variables
  • 好吧,最后我放弃了,我用 year() 的包 lubridate 创建了一个新变量,一切正常。谢谢大家!!
猜你喜欢
  • 2016-09-06
  • 2021-05-20
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 2020-02-07
  • 1970-01-01
相关资源
最近更新 更多