【问题标题】:Converting date format to ddmmyyyy将日期格式转换为 ddmmyyyy
【发布时间】:2013-04-10 00:11:20
【问题描述】:

我有一组以日期为列的数据。当我打开 csv 文件时,我看到如下格式

22/02/2013 23:10    
22/02/2013 23:20   
23/02/2013 00:20   
22/02/2013 23:10   
22/02/2013 23:59

但是当我读到这个文件时,打印出的日期格式如下:

> head(tow$X22)
[1] "23:10 / 22-Feb" "23:20 / 22-Feb" "00:20 / 23-Feb" "23:10 / 22-Feb"
[5] "23:59 / 22-Feb" "23:15 / 22-Feb"

我尝试使用我能找到的所有选项将这些数据转换为“ddmmyyyy”格式,如下所示:

  tow$X22 <- as.Date(as.character(tow$X22),format="%d-%m-%y")      
  tow$X22 <- strptime(tow$X22,"%d%m%Y")        
  tow$X22 <- strftime(tow$X22,"%d%m%Y")    
  tow$X22 <- strftime(as.character(tow$X22),"%d%m%Y")     
  tow$X22 <- as.Date(tow$X22,"%d%m%Y")      

但是没有任何效果。结果都给出了 NA

请指教,我哪里出错了。

我的数据如下: X01 X02 X03 X04 X05 X06 X07 X08 X09 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 TOW OUT EK0134--EK0705 NA C40---D02 4318 - TBL600 TOW OUT FM C40 TO HGR P 0010 A- NA 1 OUT PUSH_TOW_OUT PUSH_TOW_OUT 22/02/2013 23:53 23/02/2013 00:21 星期六 23/02/2013 00:16 23/02/2013 00:21 5 完成 22/02/2013 22:55 24/02/ 2013 02:30 24/02/2013 02:44 22/02/2013 23:10 拖出 EK0726--EK0650 NA E41---D03 4507 - TBL400 拖出 FM E41 TO HGR P 0001 A-0008/0025 NA 1 TOW OUT PUSH_TOW_OUT PUSH_TOW_OUT 22/02/2013 23:55 23/02/2013 00:13 星期六 23/02/2013 00:08 23/02/2013 00:25 17 完成 22/02/2013 23:19 24/02 /2013 02:45 24/02/2013 02:59 22/02/2013 23:20 TOW IN EK0176--EK0658 NA D02---B24 4508 - TBL400 TOW IN D02 TO B24 P-0045 A- NA 1 TOW IN PUSH_TOW_DEP PUSH_TOW_DEP 23/02/2013 00:36 23/02/2013 01:18 星期六 23/02/2013 01:13 23/02/2013 01:26 13 完成 22/02/2013 23:48 23/02/2013 03:15 23/02/2013 03:25 23/02/2013 00:20 拖出 EK0383--EK0308 NA E26---A03 4507 - TBL400 拖出 FM E26 到 HGR P-00 30 A- NA 1 TOW OUT PUSH_TOW_OUT PUSH_TOW_OUT 23/02/2013 00:43 23/02/2013 01:32 星期六 23/02/2013 00:46 23/02/2013 01:03 17 完成 22/02/2013 22 :47 23/02/2013 11:20 23/02/2013 11:43 22/02/2013 23:10

我的代码如下:

tow <-read.csv(file.choose(),skip=3)   
tow<-subset(tow,tow[1]!="Special Task")   
#SPLITTING FLIGHT NUMBERS AND ADDING TO DATA FRAME
a<-data.frame(do.call(rbind,strsplit(as.character(tow$X02),"--")))
if(nrow(tow)!=nrow(a)) cat("ERROR IN FLIGHT NUMBERS *** PLEASE CHECK","\n")
names(a)<-c("Arr","Dep")
tow<-cbind(tow,a)


#IDENTIFYING & REMOVING COLUMNS WHICH ARE NOT HAVING ARRIVAL & DEPARTURE TIMES
 tow<-subset(tow,tow[20]!="")
 a<-data.frame(do.call(rbind,strsplit(as.character(tow$X20)," ")))
 if(nrow(tow)!=nrow(a)) cat("ERROR IN DEPARTURE DATE & TIME *** PLEASE CHECK","\n")
 names(a)<-c("DD","DT")
 tow<-cbind(tow,a)

tow<-subset(tow,tow[22]!="")
a<-data.frame(do.call(rbind,strsplit(as.character(tow$X22)," ")))
if(nrow(tow)!=nrow(a)) cat("ERROR IN ARRIVAL DATE & TIME *** PLEASE CHECK","\n")
names(a)<-c("DD","DT")
tow<-cbind(tow,a)

#IDENTIFYING & REMOVING COLUMNS WHICH ARE NOT HAVING ARRIVAL & DEPARTURE TIMES
tow<-subset(tow,tow[20]!="")
a<-data.frame(do.call(rbind,strsplit(as.character(tow$X20)," ")))
if(nrow(tow)!=nrow(a)) cat("ERROR IN DEPARTURE DATE & TIME *** PLEASE CHECK","\n")
names(a)<-c("DD","DT")
tow<-cbind(tow,a)

tow<-subset(tow,tow[22]!="")
a<-data.frame(do.call(rbind,strsplit(as.character(tow$X22)," ")))
if(nrow(tow)!=nrow(a)) cat("ERROR IN ARRIVAL DATE & TIME *** PLEASE CHECK","\n")
names(a)<-c("DD","DT")
tow<-cbind(tow,a)

【问题讨论】:

  • 你用什么打开文件?
  • 你还没有告诉你想要达到什么输出?解释你的问题将有助于更多的回答。我得到的不是尝试“日期格式”而是使用“%s”可能会起作用。
  • 我还有其他数据元素以及日期。我的数据共有 22 列。我正在使用 read.csv(file.choose()) 打开文件。我希望我的输出将 22/02/2013 23:10 显示为“22022013”​​

标签: r date format


【解决方案1】:

试试这个:

df <- read.table(text=
"22/02/2013 23:10
22/02/2013 23:20
23/02/2013 00:20
22/02/2013 23:10
22/02/2013 23:59", stringsAsFactors=F)

strptime(df$V1, "%d/%m/%Y")
[1] "2013-02-22" "2013-02-22" "2013-02-23" "2013-02-22" "2013-02-22"

【讨论】:

  • 我还有其他数据元素以及日期。我的数据共有 22 列。我正在使用 read.csv(file.choose()) 打开文件。我希望我的输出将 22/02/2013 23:10 显示为“22022013”​​。似乎只有在 read.table 中给出“text=”时,上述内容才有效。如果我错了,请纠正我
  • 默认情况下read.table 使用space 作为分隔符,而read.csv 使用,。这意味着在我的示例中,数据表有 2 列日期 + 时间。看起来你都得到了 1 列。
  • 1.您可以发布文件的前 3 行吗? 2. 可以贴出read.csv调用中用到的参数(选项)吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2017-09-28
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多