我有一个数据框,其中包含一个列,该列是一系列日期,通过 Google 表单收集。日期和时间分别收集。数据是通过从日历中选择一天来输入的,并且日期是手动输入的——应该是 24 小时制,但该字段似乎刚刚检查了小时和分钟是否在正确的范围内。
我已经从.csv
. 我通过使用将日期时间字符字段(从 中读取.csv
)转换为新变量中的日期时间格式as.POSIXct(foo$When, tz="NZ", format="%Y-%m-%d %H:%M")
。日期和时间构造正确。
除了:我在原始数据中有一些不正确的日期/时间条目。正如您所期望的那样,这些都已NA
在新领域中设置。对于确实包含时间的那些,我一直在尝试修复它们,同时仍保留POSIXct
格式。
我一直不成功。
这是我拥有的数据示例以及我尝试做的事情:
TestDataForHelp <- data.frame(OldDateTime =
c("2013-12-04 21:10", "2013-12-15 09:07", "2014-01-01 06:27",
"2014-11-02 21:15", "2014-11-07 23:00", "2015-01-04 21:42",
"201508-11-02 20:15", "201508-11-02 20:15", "2017-11-02"))
TestDataForHelp$ActualDateTime <-
as.POSIXct(TestDataForHelp$OldDateTime, tz="NZ", format="%Y-%m-%d %H:%M")
TestDataForHelp$FixedDateTime <-
ifelse(TestDataForHelp$OldDateTime=="201508-11-02 20:15",
as.POSIXct("2015-11-02 20:15", tz="NZ", format="%Y-%m-%d %H:%M"),
TestDataForHelp$ActualDateTime)
新变量FixedDateTime
没有POSIXct type
。它已被隐式转换为numeric
类型。如何保留POSIXct
格式ActualDateTime
而不进行隐式类型转换?
我不想拥有FixedDateTime
,而是将更正后的数据放入ActualDateTime
. ifelse()
似乎是导致格式从转换POSIXct
为numeric
. 如果我做:
TestDataForHelp$CopiedDateTime <- TestDataForHelp$ActualDateTime
新变量只是原始变量的副本,它保留了POSIXct
类型。
评论中链接的上一个问题仅与日期值有关,与日期时间值无关。鉴于我的也不包括秒,数据操作在处理日期时间值时变得更加复杂。另一个区别是原始变量包含日期、日期时间和不正确的日期时间值的混合,而之前的问题具有相同的值。目前尚不清楚变量的不统一内容是否导致了问题。
编辑:我通过在将字符串转换为日期之前修复字符串来解决问题。这消除了尝试循环访问日期的需要。