1. ホーム
  2. r

[解決済み] Rで日付の書式を変更する

2022-03-13 03:10:56

質問

Rに非常に単純なデータがあり、その日付フォーマットを変更する必要があります。

 date midpoint
1   31/08/2011   0.8378
2   31/07/2011   0.8457
3   30/06/2011   0.8147
4   31/05/2011   0.7970
5   30/04/2011   0.7877
6   31/03/2011   0.7411
7   28/02/2011   0.7624
8   31/01/2011   0.7665
9   31/12/2010   0.7500
10  30/11/2010   0.7734
11  31/10/2010   0.7511
12  30/09/2010   0.7263
13  31/08/2010   0.7158
14  31/07/2010   0.7110
15  30/06/2010   0.6921
16  31/05/2010   0.7005
17  30/04/2010   0.7113
18  31/03/2010   0.7027
19  28/02/2010   0.6973
20  31/01/2010   0.7260
21  31/12/2009   0.7154
22  30/11/2009   0.7287
23  31/10/2009   0.7375

よりも %d/%m/%Y というRの標準的な書式にしたいのです。 %Y-%m-%d

この変更はどのようにすればよいのでしょうか?私は試してみました。

nzd$date <- format(as.Date(nzd$date), "%Y/%m/%d")

しかし、それは年を切り落とし、日にちをゼロにしただけです。

 [1] "0031/08/20" "0031/07/20" "0030/06/20" "0031/05/20" "0030/04/20"
 [6] "0031/03/20" "0028/02/20" "0031/01/20" "0031/12/20" "0030/11/20"
 [11] "0031/10/20" "0030/09/20" "0031/08/20" "0031/07/20" "0030/06/20"
 [16] "0031/05/20" "0030/04/20" "0031/03/20" "0028/02/20" "0031/01/20"
 [21] "0031/12/20" "0030/11/20" "0031/10/20" "0030/09/20" "0031/08/20"
 [26] "0031/07/20" "0030/06/20" "0031/05/20" "0030/04/20" "0031/03/20"
 [31] "0028/02/20" "0031/01/20" "0031/12/20" "0030/11/20" "0031/10/20"
 [36] "0030/09/20" "0031/08/20" "0031/07/20" "0030/06/20" "0031/05/20"

ありがとうございます。

解決方法は?

ここでは、2つのステップに分かれています。

  • データを解析する。あなたの例は完全に再現できるものではありません。データはファイルですか、それとも変数はテキストまたは因子変数ですか? 後者と仮定して、data.frame が X と呼ばれる場合、次のことができます。
<ブロッククオート
 X$newdate <- strptime(as.character(X$date), "%d/%m/%Y")

では newdate カラムの型は Date .

  • データをフォーマットする。 これは format() または strftime() :
 format(X$newdate, "%Y-%m-%d")

より完全な例です。

R> nzd <- data.frame(date=c("31/08/2011", "31/07/2011", "30/06/2011"), 
+                    mid=c(0.8378,0.8457,0.8147))
R> nzd
        date    mid
1 31/08/2011 0.8378
2 31/07/2011 0.8457
3 30/06/2011 0.8147
R> nzd$newdate <- strptime(as.character(nzd$date), "%d/%m/%Y")
R> nzd$txtdate <- format(nzd$newdate, "%Y-%m-%d")
R> nzd
        date    mid    newdate    txtdate
1 31/08/2011 0.8378 2011-08-31 2011-08-31
2 31/07/2011 0.8457 2011-07-31 2011-07-31
3 30/06/2011 0.8147 2011-06-30 2011-06-30
R> 

3列目と4列目の違いは、タイプです。 newdate はクラス Date 一方 txtdate は文字です。