Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
This week’s R bulletin will cover topics on how to round to the nearest desired number, converting and comparing dates and how to remove last x characters from an element.
We will also cover functions like rank, mutate, transmute, and set.seed. Click To TweetHope you like this R weekly bulletin. Enjoy reading!
Shortcut Keys
1. Comment/uncomment current line/selection – Ctrl+Shift+C
2. Move Lines Up/Down – Alt+Up/Down
3. Delete Line – Ctrl+D
Problem Solving Ideas
Rounding to the nearest desired number
Consider a case where you want to round a given number to the nearest 25. This can be done in the following manner:
round(145/25) * 25[1] 150
floor(145/25) * 25[1] 125
ceiling(145/25) * 25[1] 150
Usage:
Assume if you are calculating a stop loss or take profit for an NSE stock in which the minimum tick is 5 paisa. In such case, we will divide and multiply by 0.05 to achieve the desired outcome.
Example:
Price = 566 Stop_loss = 1/100 # without rounding SL = Price * Stop_loss print(SL)[1] 5.66
# with rounding to the nearest 0.05 SL1 = floor((Price * Stop_loss)/0.05) * 0.05 print(SL1)[1] 5.65
How to remove last n characters from every element
To remove the last n characters we will use the substr function along with the nchr function. The example below illustrates the way to do it.
Example:
# In this case, we just want to retain the ticker name which is "TECHM" symbol = "TECHM.EQ-NSE" s = substr(symbol,1,nchar(symbol)-7) print(s)[1] “TECHM”
Converting and Comparing dates in different formats
When we pull stock data from Google finance the date appears as “YYYYMMDD”, which is not recognized as a date-time object. To convert it into a date-time object we can use the “ymd” function from the lubridate package.
Example:
library(lubridate) x = ymd(20160724) print(x)[1] “2016-07-24”
Another data provider gives stock data which has the date-time object in the American format (mm/dd/yyyy). When we read the file, the date-time column is read as a character. We need to convert this into a date-time object. We can convert it using the as.Date function and by specifying the format.
dt = "07/24/2016" y = as.Date(dt, format = "%m/%d/%Y") print(y)[1] “2016-07-24”
# Comparing the two date-time objects (from Google Finance and the data provider) after conversion identical(x, y)[1] TRUE
Functions Demystified
rank function
The rank function returns the sample ranks of the values in a vector. Ties (i.e., equal values) and
missing values can be handled in several ways.
rank(x, na.last = TRUE, ties.method = c(“average”, “first”, “random”, “max”, “min”))
where,
x: numeric, complex, character or logical vector
na.last: for controlling the treatment of NAs. If TRUE, missing values in the data are put last; if FALSE, they are put first; if NA, they are removed; if “keep” they are kept with rank NA
ties.method: a character string specifying how ties are treated
Examples:
x <- c(3, 5, 1, -4, NA, Inf, 90, 43) rank(x)[1] 3 4 2 1 8 7 6 5
rank(x, na.last = FALSE)[1] 4 5 3 2 1 8 7 6
mutate and transmute functions
The mutate and transmute functions are part of the dplyr package. The mutate function computes new variables using the existing variables of a given data frame. The new variables are added to the existing data frame. On the other hand, the transmute function creates these new variables as a separate data frame.
Consider the data frame “df” given in the example below. Suppose we have 5 observations of 1-minute price data for a stock, and we want to create a new variable by subtracting the mean from the 1-minute closing prices. It can be done in the following manner using the mutate function.
Example:
library(dplyr) OpenPrice = c(520, 521.35, 521.45, 522.1, 522) ClosePrice = c(521, 521.1, 522, 522.25, 522.4) Volume = c(2000, 3500, 1750, 2050, 1300) df = data.frame(OpenPrice, ClosePrice, Volume) print(df)
df_new = mutate(df, cpmean_diff = ClosePrice - mean(ClosePrice, na.rm = TRUE)) print(df_new)
# If we want the new variable as a separate data frame, we can use the transmute function instead. df_new = transmute(df, cpmean_diff = ClosePrice - mean(ClosePrice, na.rm = TRUE)) print(df_new)
set.seed function
The set.seed function helps generate the same sequence of random numbers every time the program runs. It sets the random number generator to a known state. The function takes a single argument which is an integer. One needs to use the same positive integer in order to get the same initial state.
Example:
# Initialize the random number generator to a known state and generate five random numbers set.seed(100) runif(5)[1] 0.30776611 0.25767250 0.55232243 0.05638315 0.46854928
# Reinitialize to the same known state and generate the same five 'random' numbers set.seed(100) runif(5)[1] 0.30776611 0.25767250 0.55232243 0.05638315 0.46854928
Next Step
We hope you liked this bulletin. In the next weekly bulletin, we will list more interesting ways and methods plus R functions for our readers.
The post R Weekly Bulletin Vol – XI appeared first on .
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.