Running totals in R
Let’s say we wanted to simulate flipping a coin 50 times using the statistical language R, where a 1 is a heads and 0 is tails.
> flips=sample(0:1, 50, replace=T) > flips [1] 0 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 1 [39] 1 1 1 0 1 0 0 1 1 0 1 1
Now we can plot the values to see which were heads and which were tails:
> plot(flips, main="Coin flips",ylab="0 = tails, 1 = heads")
What if we want to see a running total of the number of heads over time? I was faced with just this problem for a completely different domain; I’ve written the function myself multiple times in Java and other languages but I was hoping it would be built-in to a stats language like R. Fortunately I was right; the command you want is cumsum (cumulative sum). There are a total of four functions like this:
Cumulative Sums, Products, and Extremes
cumsum(x) cumprod(x) cummax(x) cummin(x)
They work just as you’d expect.
> cumsum(flips) [1] 0 1 1 2 2 3 4 5 6 7 8 9 10 10 10 11 12 12 13 14 14 15 15 16 17 [26] 18 19 19 19 20 20 20 20 20 20 21 21 22 23 24 25 25 26 26 26 27 28 28 29 30 > plot(cumsum(flips), main="Number of heads flipped over time",ylab="Number of heads")
This is a trivial example, but it certainly simplifies my life.
Categories: programming, R
Comments (0)
Trackbacks (0)
Leave a comment
Trackback