2012-01-17 4 views
2

データフレームを連結しなければならない混合フォーマットのデータフレームにデータを抽出しました。次のようにデータフレームの構造は次のとおりです。データフレーム内の混合日付フォーマットを変換する

dateDF <- structure(list(id = 1:7, value = c(5813L, 8706L, 4049L, 5877L, 
1375L, 2223L, 3423L), date = structure(c(4L, 3L, 2L, 1L, 7L, 
6L, 5L), .Label = c("??:?? 05-Dec-11", "??:?? 06-Dec-11", "??:?? 07-Dec-11", 
"??:?? 19-Dec-11", "30/12/2011 16:00", "30/12/2011 16:45", "31/12/2011 19:10" 
), class = "factor")), .Names = c("id", "value", "date"), row.names = c(NA, 
-7L), class = "data.frame") 

私が生産するdateDF$date <- str_replace(string=dateDF$date, pattern='\\?\\?\\:\\?\\? ', '12:00 ')を使用しています

id value date 
1 5813 12:00 19-Dec-11 
2 8706 12:00 07-Dec-11 
3 4049 12:00 06-Dec-11 
4 5877 12:00 05-Dec-11 
5 1375 31/12/2011 19:10 
6 2223 30/12/2011 16:45 
7 3423 30/12/2011 16:00 

私は今と一致形式にフォーマットhh:mm dd-mmm-yyでトップ4スタイルの日付を変換する必要があります最初の書式が列に存在するそれぞれの場合の下位3つの日付書式dd/mm/yyyy hh:mm

何か助けていただければ幸いです。

J.

答えて

4

あなたが唯一のこれら二つの形式を持っていることがわかっている場合は、まずそれらを識別(最初のものは、その中のアルファベット文字を持って、他にはない)、それに応じて変換することができます。

dateDF$date <- as.POSIXlt( 
    dateDF$date, 
    format = ifelse( 
    grepl("[a-z]", d$date), 
    "%H:%M %d-%b-%y", 
    "%d/%m/%Y %H:%M" 
) 
) 
+0

ありがとう@VincentZoonekynd、これは素晴らしいです。 – John

関連する問題