1

因子レベルが欠落している場合、次の方法でテーブルを使用できます。

marks <- c(1,5,3,4,5,6)
table(ordered(marks,levels=1:6))

これは、頻度がゼロでリストされたレベル「2」のテーブルを返します。

「マーク」に関連付けられた「スコア」のセットがあり、欠落しているレベル (ここでは 2) がなかったtapply場合、各レベルのスコアの合計を生成するために使用できます。

tapply(scores,marks,sum)

「不足している」因子レベルのケースにタッププライを適応させることはできますか? それとももっと良い方法がありますか?

4

1 に答える 1

1

ここでの考え方は、 テーブル関数の動作をエミュレートすることです。

まず、スコア ベクトルを生成します。スコア <- サンプル(1:6)

次に、2つのステップで:

  1. タップして、欠損値の NA でスコアを取得します。ここでは、テーブル関数のような合計関数を使用しますが、任意のカスタム関数 (最大、最小、..) を使用できます。

     res <- tapply( scores , ordered(marks,levels=1:6),function(x) {sum(x)} )
    
  2. 次に、欠損値を置き換えるだけです

     res[is.na(res)] <- 0
    
于 2012-11-21T11:22:38.777 に答える