2013-04-17 258 views
0

我有一组数据,其日期为列。当我打开CSV文件,我看到的格式如下将日期格式转换为ddmmyyyy

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

请指教,我哪里出问题了。

+3

你用什么来打开文件? – James

+0

你没有告诉你想要达到什么样的输出?解释你的问题将有助于更多的回答。我得到它而不是尝试'日期格式'只是使用'%s'可能工作。 – smkrn110

+0

我有其他数据元素以及日期。我的数据总共有22列。我正在使用read.csv(file.choose())来打开文件。我希望我的输出显示为22/02/2013 23:10 as“22022013”​​ – Chandra

回答

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" 
+0

我有其他数据元素以及日期。我的数据总共有22列。我正在使用read.csv(file.choose())来打开文件。我希望我的输出在22/02/2013 23:10显示为“22022013”​​。如果我在错误位置给出了“text =”,那么看起来上面是有效的。请纠正我,如果我错了 – Chandra

+0

默认情况下'read.table ''使用'space'作为分隔符,而'read.csv'使用''''这意味着在我的例子中,数据表有2列date + time。看起来你得到1列。 – Nishanth

+0

1.你能发表吗?文件的前3行? 2.您能否发布'read.csv'调用中使用的参数(选项)? – Nishanth

-1

我的数据低于:
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至HGR P 0010 A-不适用1 TOW 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 TOW OUT EK0726 - EK0650 NA E41 --- D03 4507 - TBL400 TOW OUT FM E41到HGR P 0001 A-0008/0025不适用1拖出PUSH_TOW_OUT PUSH_TOW_OUT 22/02/2013 23:55 23/02/2 013 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 TOW OUT EK0383 - EK0308 NA E26 --- A03 4507 - TBL400 TOW OUT FM E26 TO HGR P-0030 A-不适用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) 
+0

您应该将此添加到问题中,而不是作为答案。(这是因为这不是答案。回答你自己的问题是完全可以接受的。) –

+0

我把数据转换成日期数据:41327.99167 41327.94931 41328.01597 41328.02014 41328。02639 41328.04097 – Chandra