1

これがやや初心者の質問である場合は、事前に謝罪しますが、フォーラムを調べたところ、自分がやろうとしていることを検索する方法が見つかりませんでした。私はトレーニングセットを持っており、カテゴリ変数のレベル数を減らす方法を見つけようとしています(以下の例では、カテゴリは状態です)。状態をレベルの平均またはレートにマッピングしたいと思います。私のトレーニングセットは、データフレームに入力すると次のようになります。

    state class mean
1      CA     1    0
2      AZ     1    0
3      NY     0    0
4      CA     0    0
5      NY     0    0
6      AZ     0    0
7      AZ     1    0
8      AZ     0    0
9      CA     0    0
10     VA     1    0

データフレームの3番目の列を、クラス変数に基づく最初の列(状態)の平均にします。したがって、CA行の平均は0.333になります...平均列を状態列の代わりに使用できるようにするRで明示的なループを記述せずにこれを行う良い方法はありますか?

トレーニングセットに新しいレベル(新しい状態の例)が含まれていない場合、どのようにマッピングしますか?Rのアプローチへのリンクをいただければ幸いです。

4

2 に答える 2

3

これは本当にave関数が設計された目的です。これは実際にはカテゴリごとに機能的な結果を作成するために使用できますが、そのデフォルトの機能は意味があるため、名前、つまりave-(rage):

dfrm$mean <- with( dfrm, ave( class, state ) ) #FUN=mean is the default "setting"
于 2012-01-05T00:03:11.570 に答える
1
    library(plyr)
    join(data,ddply(data,.(state),summarise,mean=mean(class)),by=("state"),type="left")
于 2012-01-04T23:21:24.460 に答える