2017-02-06 4 views
-3

私は日付のデータ型を持つ列を持っていました。私のコラムでは、日付は2007年4月1日の形式です。今私は、Rの別の列にその列からその列と日付の値から月の値を抽出したいと思います。私の日付は2012年1月1日から01/01/2015までです。どのようにデータの列から月と日付と年を抽出することができます

+1

「4/1/2007フォーマット」?それは1月4日か、4月1日ですか? – thelatemail

答えて

0

初期データをcharacterとし、POSIXではないとします。

df <- data.frame(d = c("4/1/2007", "01/01/2012", "02/01/2015"), 
       stringsAsFactors = FALSE) 
df 
#   d 
# 1 4/1/2007 
# 2 01/01/2012 
# 3 02/01/2015 

これらはまだ「日付」ではなく、文字列です。

df$d2 = as.POSIXct(df$d, format = "%m/%d/%Y") 
df 
#   d   d2 
# 1 4/1/2007 2007-04-01 
# 2 01/01/2012 2012-01-01 
# 3 02/01/2015 2015-02-01 

ここでは、適切な日付(R形式)です。これらの2つの行は、各「日付」からただ1つのコンポーネントを抽出します。使用可能なすべての形式の詳細については、?strptimeを参照してください。

df$dY = format(df$d2, "%Y") 
df$dm = format(df$d2, "%m") 
df 
#   d   d2 dY dm 
# 1 4/1/2007 2007-04-01 2007 04 
# 2 01/01/2012 2012-01-01 2012 01 
# 3 02/01/2015 2015-02-01 2015 02 

代わりの方法は、各文字列から部分文字列を抽出することですが、今では正規表現の痛みになっています。そのために、私は他の誰かの正規表現の授業で学んだことを示唆し、POSIXct(または場合によってはPOSIXlt)を通して翻訳することをお勧めします。

1

あなたの変数が月を抽出するために、次のdate型(あなたがポストに言うように)単に使用している場合:

month_var = format(df$datecolumn, "%m") # this will give output like "09" 
month_var = format(df$datecolumn, "%b") # this will give output like "Sep" 
month_var = format(df$datecolumn, "%B") # this will give output like "September" 

あなたの日付変数の場合日付書式でないで、あなたはにそれらを変換する必要があります日付形式。

df$datecolumn<- as.Date(x, format = "%m/%d/%Y") 
+0

まだ質問がある場合は教えてください。 –

関連する問題