具有多个条件的频率计数 R
Frequency count with multiple conditions 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
结果 1 表示获胜。我已经使用 table 函数来获取频率和应用条件。
table(df$Outcome, df$Team == "All Stars")
Returns我这个
FALSE TRUE
0 1005 30
1 1323 57
所以中奖频率是57/87 =0.655
两个问题:
而不是手动计算获胜频率,如何将其直接嵌入到公式中?
和
如何根据 x 个最近的观察结果进行筛选?即类似
table(df$Outcome, df$Team == "All Stars" & df$date = filtering for the 5 most recent observations)
谢谢
一个选项是使用 data.table
libray(data.table)
dt <- data.table(df)
dt[, .(prop=sum(outcome)/.N),Team]
要获取 5 个最近的观察结果,您可以执行以下操作:
dt[,head(.SD,5),by=.(Team,Date)][,.(prop=sum(outcoume/.N),Team]
有一个数据框
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
结果 1 表示获胜。我已经使用 table 函数来获取频率和应用条件。
table(df$Outcome, df$Team == "All Stars")
Returns我这个
FALSE TRUE
0 1005 30
1 1323 57
所以中奖频率是57/87 =0.655
两个问题:
而不是手动计算获胜频率,如何将其直接嵌入到公式中?
和
如何根据 x 个最近的观察结果进行筛选?即类似
table(df$Outcome, df$Team == "All Stars" & df$date = filtering for the 5 most recent observations)
谢谢
一个选项是使用 data.table
libray(data.table)
dt <- data.table(df)
dt[, .(prop=sum(outcome)/.N),Team]
要获取 5 个最近的观察结果,您可以执行以下操作:
dt[,head(.SD,5),by=.(Team,Date)][,.(prop=sum(outcoume/.N),Team]