Unlocking the Power of Time: Transforming Data Frames into Time Series in R

[This article was first published on Steve's Data Tips and Tricks, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.


Hey there, fellow R enthusiasts! Today, we’re diving into the realm of time series, where data dances along the temporal dimension. To join this rhythmic analysis, we’ll first learn how to convert our trusty data frames into time series objects—the heart of time-based exploration in R.

Ready to Time Warp? Let’s Get Started!

1. Gather Your Data

Every journey begins with preparation. Here’s our sample data frame containing daily sales:

df <- data.frame(date = as.Date('2022-01-01') + 0:9,
                 sales = runif(10, 10, 500) + seq(50, 59)^2)

2. Choose Your Time Series Destination

R offers two primary time series classes:

  • “ts”: Base R’s classic time series object, designed for regularly spaced data.
  • “xts”: Part of the ‘xts’ package, offering enhanced flexibility and features.

3. Embark on the Conversion Quest

A. Transforming into “ts”:

library(stats)  # Package for 'ts' class

# Unleash the time series magic!
ts_sales <- ts(df$sales, start = c(2022, 1), frequency = 365)  # Daily data

# Admire your creation:
Time Series:
Start = c(2022, 1) 
End = c(2022, 10) 
Frequency = 365 
 [1] 2728.713 3026.967 2769.227 2928.872 3401.730 3129.780 3303.479 3414.551
 [9] 3584.525 3922.348


  • ts() function creates the time series object.
  • df$sales specifies the data for conversion.
  • start = c(2022, 1) sets the starting year and month.
  • frequency = 365 indicates daily observations (365 days per year).

B. Shaping into “xts”:

library(xts)  # Package for 'xts' class

# Time to shine!
xts_sales <- xts(df$sales, order.by = df$date)

# Behold your masterpiece:
2022-01-01 2728.713
2022-01-02 3026.967
2022-01-03 2769.227
2022-01-04 2928.872
2022-01-05 3401.730
2022-01-06 3129.780
2022-01-07 3303.479
2022-01-08 3414.551
2022-01-09 3584.525
2022-01-10 3922.348


  • xts() function constructs the time series object.
  • df$sales provides the data.
  • order.by = df$date sets the time-based ordering.

4. Your Time to Experiment!

Now that you’ve mastered the conversion, unleash your creativity:

  • Visualize trends with plots.
  • Forecast future values.
  • Analyze patterns and seasonality.
  • Decompose time series into components.
  • And much more!

The possibilities are as boundless as time itself.


  • Choose the time series class that best suits your analysis needs.
  • Always ensure your data frame has a column with valid date or time values.
  • Explore the rich functionalities of R’s time series packages.

Happy time series adventures!

To leave a comment for the author, please follow the link and comment on their blog: Steve's Data Tips and Tricks.

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.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)