2013-04-17 224 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