1

数値変数と因子の両方を含むデータフレームがあります。

あるデータフレームから別のデータフレームにデータを移動するとき、すべてが希望どおりに保持されます。

copy_data<-as.data.frame(original_data)

これにより、「original_data」のコピーが作成され、ファクターは残りのファクターになります。

より複雑なバージョンを試してみると、因子を因子のままにしたい場合、最終結果は数値のデータフレームになります。

model_data<-with(subset(copy_data, copy_data$var1<0), 
as.data.frame(cbind(var1, var2, var3, factor1, factor2, factor3)))

したがって、factor1、factor2、およびfactor3はすべて、factorではなく数値になります。私は何が欠けていますか?私はas.data.frame、model_dataをデータフレームとして設定する前に、それを使用する場合と使用しない場合を試してみました。

StackExchangeアーカイブを検索すると、ほとんどの場合、因子を変数に意図的に変更した結果が返されますが、あまり役に立ちませんでした。少し不格好なタイトルは、私の質問をそれらと区別することです。

4

1 に答える 1

1

?cbindcbindすべての入力がベクトル(あなたの場合)である場合、それは行列を返すと言います。行列には、単一のアトミックタイプ(文字、数値、論理など)のみを含めることができます。因子は原子型ではないため、変換されます。

「データフレームメソッド」セクションでは、cbinddata.frameメソッドはラップするだけなので、直接data.frame(..., check.names=FALSE)呼び出すことができます(への呼び出しは冗長です)。data.framecbind

model_data <- with(subset(copy_data, copy_data$var1<0), 
  data.frame(var1, var2, var3, factor1, factor2, factor3))
于 2012-08-02T16:08:27.177 に答える