1. ホーム
  2. r

[解決済み] Rで日付から月を抽出する方法

2022-03-08 17:24:47

質問

を使用しています。 lubridate パッケージを適用し month 関数を使用して、日付から月を抽出しています。dateフィールドに対してstrコマンドを実行すると、以下のようになります。

Factor w/ 9498 levels "01/01/1979","01/01/1980",..: 5305 1 1 1 1 1 1 1 1 1 ...

> v1$Date<-month(v1$Date)
Error in as.POSIXlt.character(as.character(x), ...) : 
character string is not in a standard unambiguous format

以下は、私のデータフレームの例です。

https://drive.google.com/file/d/0B6cqWmwsEk20Q2dHblhXZi14Wk0/edit?usp=sharing

何を間違えているのかわからない。

どうすればいいですか?

?month の状態になります。

Date-timeは、POSIXct、POSIXlt、Date、Period、chron、yearmon, yearqtr、zoo、zooreg、timeDate、xts、its、ti、jul、timeSeries、およびfts。 オブジェクトを作成します。

あなたのオブジェクトは係数であり、文字ベクトルですらない(おそらくは stringsAsFactors = TRUE ). ベクトルを何らかの datetime クラスに変換する必要があり、例えば POSIXlt :

library(lubridate)
some_date <- c("01/02/1979", "03/04/1980")
month(as.POSIXlt(some_date, format="%d/%m/%Y"))
[1] 2 4

また、便利な機能として dmy と同じことができます (ヒント: @Henrik が提案)。

month(dmy(some_date))
[1] 2 4

さらに進んで、@IShouldBuyABoat は、dd/mm/yyyy の文字フォーマットが明示的なキャストなしで受け入れられるという別のヒントを与えています。

month(some_date)
[1] 2 4

フォーマットの一覧は ?strptime . 標準的な曖昧でない形式"の略であることがわかります。

<ブロッククオート

デフォルトの書式は、国際規格ISO 8601の規則に従っています。 この規格では、日を "2001-02-28" 、時刻を このように先頭のゼロを使用することで、「14:01:02".