4

大きなデータフレームでバイナリ文字の結果を行ごとにカウントしようとしています:

V1      V2      V3      V4      V5  
Loss    Loss    Loss    Loss    Loss
Loss    Loss    Win     Win     Loss
Loss    Loss    Loss    Loss    Loss

私が知る必要があるのは、行ごとの勝敗の頻度です。これはほんの短い例 (大規模なシミュレートされた出力の一部) ですが、行 1 の場合、5 つのシミュレーションで、5 つの損失、2 つの行で 3 つの損失、2 つの勝利などがあります。

行ごとの勝敗の頻度を示す別のテーブルを生成するか、それが機能しない場合は、2 つの新しい列を追加することを望んでいました。

各行は異なるケースであり、各列はそのケースの複製です。これは、「負け」「勝ち」の 2 つのレベルを持つ要因のデータ フレームとして表示されます。

4

2 に答える 2

1

base を使用した別の方法R:

stats = function(u){
    win = sum(u=="Win")
    data.frame(Win=win, Loss=length(u)-win)
}

Reduce(rbind, apply(df, 1, stats))

#  Win Loss
#1   0    5
#2   2    3
#3   0    5

または、ベクトル化されていない1行でさらに良い:

t(apply(df, 1, function(u) table(factor(u, levels=c("Win","Loss")))))

#     Win Loss
#[1,]   0    5
#[2,]   2    3
#[3,]   0    5
于 2015-01-11T13:23:16.657 に答える