1

たまに本物のヘッドスクラッチャーを見つけます...ここで何が起こっているのか考えはありますか?

> a = strptime("2003-11-01", "%Y-%m-%d")
> b = strptime("2004-01-31", "%Y-%m-%d")
> unlist(a)
  sec   min  hour  mday   mon  year  wday  yday isdst 
    0     0     0     1    10   103     6   304     0 
> unlist(b)
  sec   min  hour  mday   mon  year  wday  yday isdst 
    0     0     0    31     0   104     6    30     0 
> a$mon = a$mon-1
> b$mon = b$mon-1
> a=as.POSIXlt(as.POSIXct(a))
> b=as.POSIXlt(as.POSIXct(b))
> a
[1] NA
> b
[1] "2003-12-31 PST"
> unlist(a)
  sec   min  hour  mday   mon  year  wday  yday isdst 
   NA    NA    NA    NA    NA    NA    NA    NA    -1 
> unlist(b)
  sec   min  hour  mday   mon  year  wday  yday isdst 
    0     0     0    31    11   103     3   364     0 

なぜbを編集できるのにaは編集できないのですか?何かが足りない気がします。

4

2 に答える 2

4

月を引くと、a日付は技術的に夏時間になります。属性も変更しない限りisdst、有効な日付ではありません。

> a <- strptime("2003-11-01", "%Y-%m-%d")
> a2 <- a
> a$mon <- a$mon - 1
> as.POSIXct(a)
[1] NA

> a2$mon <- a2$mon - 1
> a2$isdst <- 1
> as.POSIXct(a2)
[1] "2003-10-01 EDT"
于 2012-06-08T19:52:28.143 に答える
3

これ(a)は、以下のRとセッションの詳細で機能します。

> a$mon = a$mon-1
> a=as.POSIXlt(as.POSIXct(a))
> a
[1] "2003-10-01 01:00:00 BST"
> unlist(a)
  sec   min  hour  mday   mon  year  wday  yday isdst 
    0     0     1     1     9   103     3   273     1

ロケールやタイムゾーンの設定などに関する詳細情報がなければ、要素から1を引いたa $monに示される日付/時刻が存在しなかったと推測する必要があります。Rはこれらのことについてかなり賢いですが、タイムゾーンとロケールはしばしば人々を捕らえます。

本当の問題は、日付だけを処理しているのに、なぜ日付/時刻オブジェクトを使用しているのかということです。 a <- as.Date("2003-11-01", "%Y-%m-%d")この例では十分です。

私のRセッションの詳細:

> sessionInfo()
R version 2.15.0 Patched (2012-04-14 r59019)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_GB.utf8       LC_NUMERIC=C             
 [3] LC_TIME=en_GB.utf8        LC_COLLATE=en_GB.utf8    
 [5] LC_MONETARY=en_GB.utf8    LC_MESSAGES=en_GB.utf8   
 [7] LC_PAPER=C                LC_NAME=C                
 [9] LC_ADDRESS=C              LC_TELEPHONE=C           
[11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C      

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] ggplot2_0.9.1

loaded via a namespace (and not attached):
 [1] colorspace_1.1-1   dichromat_1.2-4    digest_0.5.2      
 [4] grid_2.15.0        labeling_0.1       MASS_7.3-18       
 [7] memoise_0.1        munsell_0.3        plyr_1.7.1        
[10] proto_0.3-9.2      RColorBrewer_1.0-5 reshape2_1.2.1    
[13] scales_0.2.1       stringr_0.6        tools_2.15.0
于 2012-06-08T19:43:16.607 に答える