2016-04-12 21 views
24

変数から最初の要素を削除するにはどうすればよいですか?特にこの変数に特殊文字がある場合はどうすればよいでしょうか。私は、次のように新しい列を持っている必要があり年から日付を抽出する

Date 
01/01/2009 
01/01/2010 
01/01/2011 
01/01/2012 

Date 
2009 
2010 
2011 
2012 
+9

変換するために、 '日付' クラスと「今年 – akrun

+5

または 'GSUBを抽出するために、' format'を使用します( "* /"、 ""、DFの$日) ' – mtoto

+2

や'また、@akrunのようにデータが 'Date'形式になったら、substr(as.character(....)、7,10) ' – jogo

答えて

7

すべてのあなたの日付が同じ幅であれば、あなたが日付を入れることができます例えば、私は、次の列を持っていますベクターと使用サブ

Date 
a <- c("01/01/2009", "01/01/2010" , "01/01/2011") 
substring(a,7,10) #This takes string and only keeps the characters beginning in position 7 to position 10 

出力

[1] "2009" "2010" "2011" 
64

コメントで説明したように、これは、このような場合のために、年Date形式にエントリを変換して抽出することにより達成することができるに:

format(as.Date(df1$Date, format="%d/%m/%Y"),"%Y") 
+0

ハドリーとルブリドは簡単です –

+0

なぜこれは機能しますか? 'format()'のドキュメントを見ると、あなたが提供した2番目の引数について何も言われていません。私はこれをどのように理解するべきですか? – scarface

+0

'?format':" formatは**総称的な関数**です。ここに記述されているメソッドを除いて、date(**はformat.Date **を参照)のメソッドがあります。 '?format.Date'から:## 'クラス' Dateの形式(x、...)[ここで... \t]は、他のメソッドとの間でやり取りされるさらなる引数です。 as.characterとas.Date **メソッドを使用します。 '?format.Date'の最初の例も参照してください。 – RHertel

1

まず( 日付< -cを使用して日付フォーマットにそれを変換します"01/01/2009"、 "01/01/2010"、 "01/01/2011"、 "01/01/2012")

年(as。日付( "%d /%" m /%Y "))#ちょうど年を与えるでしょう それはあなたに役立つことを願っています! :)

+3

これは 'library(lubridate)'がインストールされていて、ロードされていると思っています。 'year()'は 'base'の関数ではありません。 –

+0

はい、計算を簡単にするために潤滑油をロードする必要があります。 –

+0

あなたはその答えを明白にする必要があります –

4

あなたはlubridateパッケージから年間の機能を使用してDateオブジェクトから年を抽出することができます。

library(lubridate) 

year("2016-12-08")