2012-02-02 7 views
1

私は以下のフィールドを含むデータフレームを持っています:a、b、c。 aとbは識別子で、cは日付です。すべての識別子の組み合わせに日付があるわけではありません。データにはいくつかの重複(a、b)があります。私は最後のcだけが必要です。日付行列をキャストしますか?

フォームのレベルと行のレベルがbの列を形成する表を作成したいとします。 aとbのレベルに一致するcがある場合、それは対応するセルに終わるはずです(t [a、b] = c)。 (私は距離行列のための基礎として、テーブルのイベントをクラスタ化する)

私は次のことをやってみました:

f <- function(x) { 
    if (length(x) > 0) { 
    return(x[length(x)]) 
    } 
    else { 
    return(NA) 
    } 
} 

m.df <- melt(df) 
c.df <- cast(m.df, a ~ b, fun.aggregate = f) 

これは、そうでない場合はOKですが、キャストは何とか(整数に日付を狂わせます14746とそれ以外のもの)。なぜこれが起こるのですか?すべてがfの中でうまくいくようです。私はいつも列を日付に変換することができますが、これはむしろ奇妙です - バグですか?

答えて

0

?matrixをご覧ください。具体的に詳細セクションでこの段落:

‘as.matrix’ is a generic function. The method for data frames 
will return a character matrix if there is any 
non-(numeric/logical/complex) column, applying ‘format’ to 
non-character columns. Otherwise, the usual coercion hierarchy 
(logical < integer < double < complex) will be used, e.g., 
all-logical data frames will be coerced to a logical matrix, mixed 
logical-integer will give a integer matrix, etc. 

Dateはそのリストに含まれていないので、あなただけの基本的な整数値を取得します。

関連する問題