Measure Fielding with Range Factor

Use range factor to measure how much a defensive player works.

Range factor (RF) represents the number of balls fielded by a player per inning. It’s a pretty simple metric that you can calculate from readily available statistics (putouts, assists, and innings), and it does a pretty good job of ranking players by defensive ability. Bill James created the statistic and included it in his book 1977 Baseball Abstract.

As described in the previous hack, FP does a poor job of differentiating between players. RF is a much better statistic. RF simply measures the average number of putouts plus assists (successful defensive players) per inning. The idea is that all players will have about the same number of fielding opportunities, so we should measure players by the number of successfully fielded balls. It excludes errors because they just don’t tell you very much. Here’s the formula:

	RF = (PO + A) / (InnOuts / 3)

Sample Code

Let’s calculate range factor in SQL first. We’ll start by building a table with a summary of fielding statistics by player (in all positions played by that player):

	-- assumes indexes from
	"Measure Batting with Batting Average" [Hack #40] are there create index fielding_idx on fielding(idxLahman); create index fielding_tids on fielding(idxTeams); create table f_and_t as select idxLahman, GROUP_CONCAT(franchID SEPARATOR ",") as teamIDs, pos, sum(i.G) as G, sum(i.GS) as GS, sum(i.InnOuts) as InnOuts, sum(i.PO) as PO, sum(i.A) as A, sum(i.E) ...

Get Baseball Hacks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.