2017-06-22 3 views
1

私は日付だけを保持する1つ以上の列を含む.csvファイルをインポートするreadrパッケージからread_csv2()を使用しようとしています。私はread_csv2()はこれらの列が日付を保持していると推測しますが、列指定としてcol_character()を取得すると予想しました。はread_csv2()推測日付タイプが

構成テーブルに名前がリストされている多数のテーブルをインポートしているため、どの列を日付型にするかを事前に指定することはできません(ループを使用して構成テーブルにリストされています)。したがって、私の質問:read_csv2()は、日付の種類を正しく推測する方法はありますか?

元のファイルの日付フォーマットについてはあいまいさはないが役に立たないように、異なる日付フォーマットで日付を保存しようとしました。

データ

> t_table 

id  date colour 
1 31/12/2015 green 
2 31/01/2016 red 
3 29/02/2016 orange 
4 31/03/2016 blue 

コード

Parsed with column specification: 
cols(
    id = col_integer(), 
    date = col_character(), 
    colour = col_character() 
012をインポートする上記方法の結果として

read_csv2("t_table.csv") 

列仕様をインポートします

dateが文字型であることがわかります。

UPDATE

私は私の問題を解決する一つの方法を見つけた:入力ファイルで、使用する日付形式(私はエクセル経由でこれを行う)yyyy-mm-ddではなくdd/mm/yyyydd-mm-yyyyは機能しません。

答えて

1

あなたの質問は、日付を含む列の名前と位置の両方が予想できないことを示唆しています。その場合は、/シンボルを含む列を識別し、それをdate形式に変換することが少し難解かもしれません。 あなたが後にしている自動的な「推測」ではありませんが、何らかの使用の可能性があります。

find<-grep("[/]", t_table) 

t_table[,find]<-as.Date(t_table[,find],'%d/%m/%Y') 

str(t_table) 
#'data.frame': 4 obs. of 3 variables: 
# $ id : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 
# $ date : Date, format: "2015-12-31" "2016-01-31" "2016-02-29" "2016-03-31" 
# $ colour: Factor w/ 4 levels "blue","green",..: 2 4 3 1 
+1

この提案に感謝します。あなたのアイデアは便利かもしれません。しかし、テーブルは構成テーブル(つまり自分で設計されている)なので、今度は別の書式設定の回避策(私の投稿の更新を参照)に向かいます。 – koteletje