質問として、後者の方法の方が速度が速いことがわかりますが、なぜ最初の方法を使用するのですか? ありがとう。
1059 次
3 に答える
2
R の新機能 (バージョン 2.12.0 以降) はdroplevels()
、同じことを行う関数です。次のように実装されます。
> base:::droplevels.factor
function (x, ...)
factor(x)
<environment: namespace:base>
したがって、私はその機能を好みから使用します。"factor"
クラスおよびのオブジェクトのメソッドを備えた R の汎用関数です"data.frame"
。後者は、データ フレームにレベルの低下が必要な要素が多数ある場合に役立ちます。
于 2011-01-17T07:47:11.827 に答える
2
two コマンドはまったく同じですが、正確ではありません。特に、因子の元の順序を保持している場合はそうです。使用できない場合もあります: as.factor(as.character(f))
. 見る:
par(mfrow=c(2,3))
f <- factor(c("D", "B", "C", "K", "A"), levels=c("K", "B", "C", "D"))[2:4]
plot(f, main="Original factor")
f.fc <- as.factor(as.character(f))
plot(f.fc, main="as.factor(as.character(f))")
f.d <- drop.levels(f)
plot(f.d, main="drop.levels(f)")
f.d <- drop.levels(f, reorder=FALSE)
plot(f.d, main="drop.levels(f, reorder=FALSE))")
f.f <- factor(f)
plot(f.f, main="factor(f)")
as.factor(as.character(f))
とdrop.levels(f)
同じことを行い、因子の元の順序を保持せず、両方ともテキストを ABC 順序で再平準化します。reorder=FALSE
でオプションを使用できる順序を保持したいdrop.levels()
。
これは のデフォルトの動作ですfactor()
。
于 2011-01-17T10:42:20.100 に答える
2
未使用のレベルを削除しようとしている場合、必要なことは次のとおりです。
x <- factor(x)
于 2011-01-17T07:01:17.203 に答える