2017-05-13 7 views
-1

とカウントデータフレーム成果1は勝利を示し周波数複数の条件のR

Date   Team   Opponent Weather Outcome 
2017-05-01 All Stars  B Stars  Rainy  1 
2017-05-02 All Stars  V Stars  Rainy  1 
2017-05-03 All Stars  M Trade  Sunny  0 
. 
. 
2017-05-11 All Stars  Vdronee  Sunny  0 

を持っています。私はテーブル関数を使用して周波数と適用条件を取得しました。

むしろ手動で勝利頻度を計算し、どのように私は:

table(df$Outcome, df$Team == "All Stars") 

は私にこの

FALSE TRUE 
    0 1005 30 
    1 1323 57 

だから、勝利の周波数は87分の57 = 0.655

二つの質問を返します。これを直接式に埋め込みますか?

どのように私は、x、最新の観測結果に基づいてフィルタリングするのですか?つまり、何か

table(df$Outcome, df$Team == "All Stars" & df$date = filtering for the 5 most recent observations) 

などのおかげ

+0

はあなたです「日付」列は常に時系列でソートされますか?それがそうであるように言います。 – Kanak

+0

比テーブルの場合、 'prop.table()'を使用できます。 –

+0

@kanakはチームごとに降順でソートされます。 例2017-01-01オールスター 2017-01-02オールスター 2017-01-01その他のチーム 2017-01-02その他のチーム – Adni

答えて

0

オプションは以下にすることができます5つの、最新の観測結果を得るためにdata.table

libray(data.table) 
dt <- data.table(df) 
dt[, .(prop=sum(outcome)/.N),Team] 

を使用することです:

dt[,head(.SD,5),by=.(Team,Date)][,.(prop=sum(outcoume/.N),Team] 
+0

コメントありがとうございました。上記の式でフィルタを適用する場所はどこですか?自分のデータフレームに「All Stars」というチームが増えました。上記の提案は特定のチームの権利をフィルタリングしませんか? – Adni

+0

チームごとにグループ化されています。 – DJJ

+0

この例のように特定のチームをフィルタリングすることは可能ですか?テーブル(df $ Outcome、df $ Team == "All Stars") – Adni