web-dev-qa-db-ja.com

Rの日付から月と年を抽出

役に立たない方法をいくつか試しました。日付(YYYY-MM-DD)に関するデータがあり、MM-YYYYやYYYY-MMなど、月と年だけで取得しようとしています。

最終的には、次のようになりたいと思います。

ID    Date         Month_Yr
1     2004-02-06   2004-02
2     2006-03-14   2006-03
3     2007-07-16   2007-07
...   ...          ...

私はこれを、一定の期間にわたって、多くの注文から1か月で平均して稼いだお金をプロットすることを期待して行っています。任意のヘルプ、または正しい方向へのプッシュは大歓迎です。

39
a.powell

これにより、data.frameに指定した形式で新しい列が追加されます。

df$Month_Yr <- format(as.Date(df$Date), "%Y-%m")

df
#>   ID       Date Month_Yr
#> 1  1 2004-02-06  2004-02
#> 2  2 2006-03-14  2006-03
#> 3  3 2007-07-16  2007-07

# your data sample
  df <- data.frame( ID=1:3,Date = c("2004-02-06" , "2006-03-14" , "2007-07-16") )

簡単な例:

dates <- "2004-02-06"

format(as.Date(dates), "%Y-%m")
> "2004-02"

サイドノート:大きなデータセットを使用している場合、data.tableアプローチは非常に高速です。

library(data.table)
setDT(df)[, Month_Yr := format(as.Date(Date), "%Y-%m") ]
78
rafa.pereira

部分文字列を使用しますか?

d = "2004-02-06"
substr(d,0,7)
>"2004-02"
5
Allen Huang