Setting up a WooCommerce image gallery for your shop is a grueling process if you use the online forms. Thankfully, you can import goods and setup an image gallery using a simple CSV file. Now, if you have a few products and a few images for each product, preparing the CSV for bulk import using your favorite spreadsheet program is trivial. But, if you have lots of products and lots of images per product, manually creating the CSV via spreadsheet becomes a considerable task. However, if we know the CSV structure, we leverage R to help us automate this task in a more scaleable way. Objectives: Understand what’s in a…


XmR Chart  StepbyStep Guide by Hand and with R
Is your process in control? The XmR chart is a great statistical process control (SPC) tool that can help you answer this question, reduce waste, and increase productivity. We'll cover the concepts behind XmR charting and explain the XmR control constant with some super simple R code. Lastly, we'll cover how to make the XmR plot by hand, with base R code, and the ggQC package. Objectives: When you’re done with this post, you should: Grasp the XmR chart concept and utility Understand the math necessary to create the XmR chart by hand, and why moving range should be used instead of standard deviation to determine control limits. XmR Chart…

XmR Control Limits  Why Moving Range, not Standard Deviation
So, you want to know why we use mean moving range, mean(mR), and not standard deviation to determine XmR control limits. Before answering, let's do a quick review to make sure we are starting on the same page. The mean(mR) is determined by first finding the absolute difference between sequential pairwise measurements. This gives you a series of moving ranges – mR. Next, you calculate the mean of those ranges to give you mean(mR). Below are some sample calculations. Once you've determined the mean(mR), you are in a position to calculate the sequential deviation: mean(mR) / 1.128. By multiplying the sequential deviation by ± 3, we can establish the XmR…

Control Chart Constants  Tables and Brief Explanation
Jump to Control Chart Constants: Bias Correction Constants: d2, c4, d3, d4 XmR Constants (n=2): d2, A2, D3, D4 XbarR Constants: d2, d3, A2, D3, D4 XbarS Constants: c4, A3, B3, B4 Control chart constants are the engine behind charts such as XmR, XbarR, and XbarS. And, if you've made a control chart by hand or sat in a class, you'll likely have memories of bizarre constants like d2, A2, etc. To me, control chart constants are a necessary evil. Why? Because, it's a nuisance to look up a constant to make a chart, and I suspect that has likely frightened away many would be users over the years. These…

ggQC  ggplot Quality Control Charts – New Release
The ggQC package is a quality control extension for ggplot. Use it to create XmR, XbarR, C and many other highly customizable Control Charts. Additional statistical process control functions include Shewart violation checks as well as capability analysis. If your process is running smoothly, visualize the potential impacted of your next process improvement with a Pareto chart. To learn more, read on! To get started with ggQC, install it from CRAN by running the following code: 1 install.packages("ggQC")install.packages("ggQC") ggQC Control Charts Control charts are a great way to monitor process outputs, drive improvement, and evaluate measurement systems. The types of control chart types supported by ggQC include: Individuals Charts :…

Windows Clipboard Access with R
The windows clipboard is a quick way to get data in and out of R. How can we exploit this feature to accomplish our basic data exploration needs and when might its use be inappropriate? Read on. Overview Paste Data from Clipboard to R HTML Tables Spreadsheets Copy Data from R to Clipboard Summary and Usage Notes Paste Data from Clipboard to R We won't be using it in this post, but you can see the contents of the Windows clipboard in R using the readClipboard() command. Going through the documentation you'll note a variety of formats that can be read. For our purposes, we are looking at moving text…

Source and List: Organizing R Shiny Apps
Keeping R Shiny code organized can be a challenge. One method to organize your Shiny UI and Server code is to use a combination of R’s list and source functions. Another method to organize you’re Shiny code is through modularization techniques. Here though, we’re going concentrate on the list and source options. If you feel comfortable with Shiny and want to get strait to the answer, check out the Solution section. Otherwise, read on! Outline Difficulty Organizing Shiny UIs A UI Source Example That Usually Doesn’t Work When Source Fails in the UI Solution Usage Note Organizing the Shiny Server with Source Summary Difficulty Organizing Shiny UIs If you have…

Estimating Control Chart Constants with R
In this post, I will show you how a very basic R code can be used to estimate quality control constants needed to construct XIndividuals, XBar, and RBar charts. The value of this approach is that it gives you a mechanical sense of where these constants come from and some reinforcement on their application. If you work in a production or quality control environment, chances are you’ve made or seen a control chart. If you’re new to control charting or need a refresher check out Understanding Statistical Process Control, Wheeler et. al. If you want to dive in and start making control charts with R, check out R packages ggQC:…

Infamous Inf – Part II
R’s Inf keyword – Have you’ve ever wondered what to do with it? If so, this is the second in series of posts that explore how we can exploit the keyword’s interesting properties to get the answers we need and improve code robustness. If you want to catch up on the first post where we look at Inf and the cut() function, please see Infamous Inf – Part I For those unfamiliar with R’s Inf keyword, it is defined as a positive or negative number divided by zero yielding positive or negative infinity, respectively. c(plus_inf = 1/0, minus_inf = 1/0) # plus_inf minus_inf # Inf Inf Sounds very theoretical. So…

Infamous Inf – Part I
R’s Inf keyword – Have you’ve ever wondered what to do with it? If so, this is the first in series of posts that explore how we can exploit the keyword’s interesting properties to get the answers we need and improve code robustness. For those unfamiliar with R’s Inf keyword, it is defined as a positive or negative number divided by zero yielding positive or negative infinity, respectively. c(plus_inf = 1/0, minus_inf = 1/0) # plus_inf minus_inf # Inf Inf Sounds very theoretical. So how we can make practical use of infinity in R? In this first post, we’ll be discussing how Inf can make binning data with cut() a…