Here is how to generate random dates or numbers in R by using base functions. There are similarities in both of the tasks, and they are useful in creating reproducible examples.

If you want to create a reproducible data frame that does not contains random content, look at this post.

## Random dates in R

Here is how to generate random dates in R between two dates. In a way, it is not truly random – there are limits to randomness.

set.seed(1234) start_date <- as.Date("2023-03-01") end_date <- as.Date("2023-03-15") sample(seq(start_date, end_date, by = "day"), size = 5) #[1] "2023-03-12" "2023-03-10" "2023-03-06" "2023-03-05" "2023-03-09"

It is important to use the function *set.seed* if you want to get the same “random” result.

Here is how to do the same differently.

set.seed(1234) as.Date("2023-03-01") + sample(0:14, size = 5) #[1] "2023-03-12" "2023-03-10" "2023-03-06" "2023-03-05" "2023-03-09"

By default, with the function *sample*, you can generate results without repetition, but you can repeat values in the results with an additional argument.

set.seed(1234) start_date <- as.Date("2023-03-01") end_date <- as.Date("2023-03-15") sample(seq(start_date, end_date, by = "day"), size = 5, replace = TRUE) #[1] "2023-03-12" "2023-03-10" "2023-03-06" "2023-03-05" "2023-03-12"

With the function *sort*, you can arrange the results and see the repeating values more clearly.

set.seed(1234) sort(sample(seq(start_date, end_date, by = "day"), size = 5, replace = TRUE)) #[1] "2023-03-05" "2023-03-06" "2023-03-10" "2023-03-12" "2023-03-12"

## Random numbers in R

By using the function *sample*, you can generate random whole numbers in R between two values.

set.seed(1234) sample(1:10, size = 5) #[1] 10 6 5 4 1

If you like random decimal numbers, you can generate them by using the function *runif*.

set.seed(1234) runif(n = 5, min = 1, max = 10) #[1] 2.023331 6.600695 6.483473 6.610415 8.748238

Round the result, if you like.

set.seed(1234) round(runif(n = 5, min = 1, max = 10), digits = 2) #[1] 2.02 6.60 6.48 6.61 8.75

With the function *rnorm*, you can generate numbers from the normal distribution. You can specify the necessary parameters. For example, the mean of the distribution.

set.seed(1234) rnorm(n = 5, mean = 1) #[1] -0.2070657 1.2774292 2.0844412 -1.3456977 1.4291247

Here is how you can use that in scatter plot visualization.

### A data frame with random dates and numbers in R

Here is how to generate an R data frame with random dates and numbers.

set.seed(1234) d <- sample(seq(as.Date("2023-03-01"), as.Date("2023-03-15"), by = "day"), size = 5) x <- sample(50:100, size = 5, replace = TRUE) y <- sample(50:100, size = 5, replace = TRUE) df <- data.frame("date" = sort(d), "value1" = x, "value2" = y) df # date value1 value2 # 1 2023-03-05 54 88 # 2 2023-03-06 87 71 # 3 2023-03-09 65 75 # 4 2023-03-10 53 55 # 5 2023-03-12 83 64

### Generate art in R

By the way, the featured image of this post is generated with the *aRtsy* package. Try it for yourself and take a look at what you can get for this day.

require(aRtsy) set.seed(Sys.Date()) canvas_flame(colors = colorPalette("sky"))

Please look at other visualizations in this blog made using R. For example, gradient line chart, glowing line chart, and gradient word cloud.

## Leave a Reply