2010-12-17 2 views
3

データフレームにPOSIXctクラスを割り当てる:R:私はデータフレームにPOSIXctオブジェクトを割り当てる場合、それは例えば、整数等価に変換

> x<-as.data.frame(matrix(nrow=1,ncol=2)) 
> x 
    V1 V2 
1 NA NA 
> x[1,1]<-as.POSIXct("2010-12-07 08:00:00") 
> x 
      V1 V2 
1 1291708800 NA 

この動作を停止する方法があり、すべての代入を済ませたら、簡単に整数をPOSIXctに変換することができますか?

答えて

5

既に作成した列を変換する必要があります。

x <- as.data.frame(matrix(nrow=1,ncol=2)) 
class(x[1,1]) 
[1] "logical" 

classが既に割り当てられている方法を参照してください。 matrixは、1つのデータ型しか持てません。

x[,1] <- as.POSIXct(x[,1]) 
x[1,1] <- as.POSIXct("2010-12-07 08:00:00") 
class(x[1,1]) 
[1] "POSIXt" "POSIXct" 
x 
        V1 V2 
1 2010-12-07 08:00:00 NA 

もちろん、私が最初に空の行列として作成した理由はわかりません。

x <- data.frame(date=as.POSIXct("2010-12-07 08:00:00"), value=NA) 
+1

は '編集()'と '修正が()'で(変数から日付クラスを削除し、文字に変換されることに注意してください少なくともR 2.12.0では)。それはなぜ私は知らないのですか? – caracal

+0

あなたはスターです。ありがとう! –

+1

このソリューションを使用したとき、私はoriginとtimezoneをコマンドに追加する必要がありました。 – userJT

1

私はまったく同じ問題を抱えています。これを解決するために、私はas.POSIXct()を使ってデータフレームの列クラスを宣言しました。

例:あなたはそれに文字を書くことができます

> temp = data.frame(col1 = NA) 
> str(temp) 
'data.frame': 1 obs. of 1 variable: 
$ col1: logi NA 

:最初のデフォルトの列クラスが"logical"であっても

> temp = data.frame(col1 = NA) 
> temp[1,] = Sys.time() 
> str(temp) 
'data.frame': 1 obs. of 1 variable: 
$ col1: num 1.4e+09 

しかし興味深いことに

> temp = data.frame(col1 = as.POSIXct(NA,"")) 
> temp[1,] = Sys.time() 
> str(temp) 
'data.frame': 1 obs. of 1 variable: 
$ col1: POSIXct, format: "2014-05-21 15:35:46" 

> temp = data.frame(col1 = NA) 
> temp[1,] = "hello" 
> str(temp) 
'data.frame': 1 obs. of 1 variable: 
$ col1: chr "hello" 

しかし、POSIXctのように、あなたが書くことができない要因:また

> temp = data.frame(col1 = NA) 
> temp[1,] = as.factor("hello") 
> str(temp) 
'data.frame': 1 obs. of 1 variable: 
$ col1: int 1 
関連する問題