首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建不同格式的统一日期

创建不同格式的统一日期
EN

Stack Overflow用户
提问于 2019-02-23 05:33:44
回答 3查看 186关注 0票数 0

我有一个大约有53,000行的数据集,其中一列测量观察的日期和时间。在数据收集期间,不知何故,日期的格式从mm/dd/年转换为dd/mm/年,并且这种情况发生了几次。但是,我知道每个错误发生的确切行,所以我想知道是否有一种有效的方法将它们全部更改为单一格式(我希望它们以mm/dd/年的形式出现,因为这是大多数观察结果的格式)。

下面是我正在讨论的问题的一个示例,从dd/mm/年到mm/dd/年:

代码语言:javascript
复制
data.test = data.frame(Date = c("16/11/2017 8:45 AM", "16/11/2017 9:00 AM", 
"11/16/2017 9:15 AM", "11/16/2017 9:30 AM"), Observed = c(100, 23, 291, 30))
data.test

Date                Observed
16/11/2017 8:45 AM  100         
16/11/2017 9:00 AM  23          
11/16/2017 9:15 AM  291         
11/16/2017 9:30 AM  30  

在我的数据集中,日期是字符,而其余行是数字。

EN

Stack Overflow用户

发布于 2019-02-23 05:55:58

这是一个有趣的尝试。假设您的第一个观察值的格式是正确的,则需要编写一些代码,以便根据日期应该在哪个月来检查最合理的日期格式。它如何处理几个月的变化,我还不完全确定。

这个想法是,只要第一个观察结果是正确的,它就会以正确的格式继续下去,直到一个模糊的日期被击中。在这一点上,它与前一个被认为是正确的观察月份进行了核对。如果它们匹配,则表明当前的模糊观测被正确预测,如果不匹配,则选择另一种格式。再一次,当月份转换,一个模棱两可的点击需要一些工作,但我太懒了(这是星期五)

代码语言:javascript
复制
data.test = data.frame(Date = c("9/8/2017 8:30 AM","8/9/2017 8:45 AM", "16/11/2017 9:00 AM", "11/16/2017 9:15 AM", "11/16/2017 9:30 AM"), Observed = c(100, 23, 291, 30, 45))

Date1<-
as.POSIXct(data.test$Date, format="%m/%d/%Y %H:%M %p") # search for format1
Date2<-
as.POSIXct(data.test$Date, format="%d/%m/%Y %H:%M %p") # search for format2

# Replace data.test Date Column with Date1, leaving NAs
data.test$Date<-Date1


#Check most plausible date format.
for(i in 1:length(Date1)){
  if(is.na(Date1[i])==F  && is.na(Date2[i])==F && i!= 1){
    print(paste("row",i , "ambigious format"))
      if(month(Date1[i-1])==month(Date1[i])){
         print("Date Estimated from mm/dd/YYYY format based on previous")
      }else{
         Date1[i]<-Date2[i]
         print("Date Estimated from dd/mm/YYYY format based on previous")
}
}else{}
}



# Replace NAs in data.test with index from Date2, line up
data.test$Date[is.na(data.test$Date)] <- Date2[is.na(data.test$Date)]

> data.test
                 Date Observed
1 2017-09-08 08:30:00      100
2 2017-09-08 08:45:00       23
3 2017-11-16 09:00:00      291
4 2017-11-16 09:15:00       30
5 2017-11-16 09:30:00       45
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54835495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档