Doing Math in R
This is my guide on doing math in R.
Doing Math in R
Working in R means doing a lot of calculations. This is what R is for and why it is called a statistical programming language. You can do simple math and work with vectors. In fact, there are a few different categories. They are:
- Arithmetic
- Functions
- Vectors
- Matrixes
The arithmetic operators should be familiar to everyone. These are the basic math operators everyone learned when they were kids.
- \[x + y\] y added to x
- \[x - y\] y subtracted from x
- \[x * y\] x multiplied by y
- \[\frac{x}{y}\] x divided by y
- \[x ^ y\] x raised to the power of y
- \[x %% y\] remainder of x divided by y
- \[x% / %y\] x divided by y but rounded down
Let’s move to the next section, mathematical functions. These are the traditional algebraic functions and they work the same way.
- abs(x) takes the absolute value of x
- log x takes the logarithm of x with base y
- exp(x) returns the exponential of x
- sqrt(x) returns the square root of x
- factorial (x) returns the factorial of x!
- choose(x,y) returns the number of possible combinations when drawing y elements from x possibilities
You can take the log of a number like this:
Log 1.5
You can take the log of a series of numbers:
log(2:4)
That function takes the natural log of the numbers 2,3,4
You can specify a base:
log(2:4, base=4)
The other functions work similarly, I will get into them more when we need to.
You can round numbers easily in R. You just use the ‘round()’ function.
round(454567.2333445, digits=3)
Significant digits can be done just as easily.
signif(333.334455, digits=3)
Trig functions are also available. By default, R gives results in radians. So, if you need a result in degrees, you will have to convert it. I will show you how, though.
cos(120)
Gives results in radians
cos(95 * pi / 180)
Gives results in degrees
Working With Vectors
A vector is a one-dimensional set of values. It looks like this:
x=c(1,2,3,4,5,6,7,8)
They have to be the same type, such as integers.
There is a function, ‘str()’, that lets you look at any particular vector and see its properties. Use it like this:
str(x)
To see the length of a vector:
length(x)
Vectors can be several different types:
- Numeric
- Integer
- Logical
- Character
- Datetime
- Factors
You can test a vector to see what kind it is:
is.numeric(x)
is.character(x)
is.logical(x)
Those are all separate tests to determine what kind of vector you have. You will get the output of ‘true’ when you have a match.
To create vectors you can enter in numbers or use a sequence of numbers. I will show you how to do both. It is common to assign a variable to your data so it is easy to work on it. The variable is ‘x’.
x=c(22,33,44,55,66,77,88,99)
The ‘c’ is a function itself and combines the numbers in the parentheses to make a vector.
You can also use the colon operator to create a sequence of numbers.
x=c(2:7)
This creates a vector with the number 2,3,4,5,6,7
You can include negative numbers too.
x=c(7:-2)
R lets you combine vectors when you need to. If we have:
x=c(1:9)
y=c(11:16)
We can combine them like this:
total=c(x,y)
We can repeat vectors too. We do this with the ‘rep()’ function.
If we want to repeat a vector a set number of times, we do this:
rep(c(1:9), times=4)
When we want to repeat every value:
rep(c(1:9), each=3)
We can also tell R how often to repeat each value:
rep(c(1,9), times=c(3,4)
Looking At Vector Values
Once we have a vector, R lets us look at and work with individual values. The square brackets let us extract a value from the vector. We just indicate the position we want inside of the square brackets.
X[3]
This gives us the 3rd number from the start of the vector.
We can get more than one position value at once:
x[c(1,2,3)]
This will give us the first 3 positions of the vector.
You can change the value of a vector.
x=c(1,2,3,4,5)
Let us change the last value from 5 to 3
X[5] = 3
Now, our vector has been changed to what we want to reflect it as.
Making Copies of Vectors
Before working with an important vector set of data, make a copy of it. You do not want to accidentally change it without knowing it. Do it like this:
X.copy = x
Now you can do your work with a little less worry.
Comparing Values
To compare values in a vector:
X > 5
This gives us logical values. Any time there is a value greater than 5, the output is true.
We can also check positions that are greater than 5.
which(x > 5)
This shows us which positions in the vector are greater than 5.
These are the logical operators in R:
- X == y
- X != y
- X > y
- X >= y
- X < y
- X <= y
- X & y
- X | y
- !x
- xor(x,y)
More Arithmetic Operations
Once we have a vector set up and kind of know how it works, we can start doing more with it. I recently took a statistics class and I used many of these functions to great effect. It really speeds things up. The idea of a vector is to look at each value in a vector and do something with it. That is what functions do once we have a vector set up. Here are the arithmetic functions that are pretty useful:
- sum(x) calculates the sum of values in the vector x
- prod(x) calculates the product of all the values in the vector x
- min(x) gives the minimum of all values in x
- max(x) gives the max of all the values in the vector x
- cumsum(x) gives the cumulative sum of all the values in the vector x
- cumprod(x) gives the cumulative product of all the values in the vector x
- cumin(x) gives the minimum for all values in x from the start of the vector to the position indicated
- cummax(x) gives the maximum for all values in x from the start of the vector until the position indicated
- diff(x) gives for every value the difference between that value and the next value in the vector