2017-11-03 18 views
-1

に「Date」という文字列がありますが、適切なmmddyyyy形式では書かれていません。mmddyyyy書式で書かれていない日付列をR

Example: 

ID  Date 
125  9282007 
350  10152007 
225  1112007 
240  1052007 

Rを使用して「日付」列を適切なmmddyyyy形式にフォーマットするにはどうすればよいですか?

ありがとうございます。

+0

'ライブラリ(lubridate); mdy(dat $ Date) 'となります。もちろん、私はあなたのデータフレームを 'dat'と読みました。 'mmddyyyy'フォーマットに'?format.Date'を書いてみてください。 –

+0

これまでに何をしていますか? –

答えて

1

あなたがdplyr + lubridateで次の操作を行うことができます。

library(dplyr) 
library(lubridate) 

df %>% 
    mutate(Date = gsub("(\\d{2})(\\d{4}$)", "-\\1-\\2", Date), 
     Date = format(mdy(Date), "%m-%d-%Y")) 

結果:

ID  Date 
1 125 09-28-2007 
2 350 10-15-2007 
3 225 01-11-2007 

データ:

df = read.table(text = "ID  Date 
       125  9282007 
       350  10152007 
       225  1112007", header = TRUE) 

注:1112007は、2007年11月1日または2007年1月11日を意味するかもしれませんので、

Date年代のフォーマットはあいまいです。私の解答では、日数は常に2桁であると仮定したので、11-1-2007は11-01-2007としてコード化されています。しかし、それが変換する前のケースかどうかを調べるべきです。

+0

ありがとう。私は別のデータ要素(上記の表の最後のデータ行を参照してください)を見つけましたが、10ではなく01であると考えなければなりません。上記のスクリプトはテーブルの最後の行を01に変換します。 – user8848543

+0

@ user8848543月が2桁であることを明示的に指定しない限り、1052007が10-05-2007か01-05-2007を表すかどうかを知る方法はありません。しかし、あなたは9282007を持っているので、そうではないようです。これらを考慮に入れてルールを設定する方法を決める必要があります。 – useR