Sunday, January 29, 2017

3 methods to draw wave/break bar chart

When we design bar chart with very different scales along columns, wave/break line can help to call out the scale difference, like this Excel bar chart (original post).


Here I have three methods to draw wave/break bar chart (download workbook):

Saturday, January 10, 2015

Monday, December 29, 2014

SQL script to profile data in table


Script below can be useful to produce a summary of columns in a table.
When we get a new data sources without sufficient document, this script can help us to list the number of NULLs and distinct values, as well as to list the top 50 unique values of a column.

Please download the SQL script: ProfileTable.sql

Use stored procedure in Tableau to optimize consultant practice

The typical workflow of consulting service can be labor-intensive and error-prone. We need to copy data among applications, set up calc sheet in Excel, snip Tableau screenshot, and finally to make the slides reflect the correct information scattered in modeling tools, database, and spread sheets.
What if we simplify the workflow by removing some applications, say, Excel.  
So, here is a proposal to move the calculation in Excel into SQL database with the feature of stored procedure support in Tableau 8.1 and later. 





What if we go even further, say, replace PowerPoint slides with Tableau Story Points.

Friday, June 21, 2013

Count frequency of factor column

Name: frqTable
Scenario: Want exchange data to Excel, or do the long tail fit

Code:
frqTable <- function(aFactorCol, aColName, aIsDecs="TRUE"){
  ret <- as.data.frame(table(aFactorCol))
  colnames(ret) <- c(aColName,'frq')
  ret <- ret[order(ret$frq,decreasing=aIsDecs),]
  rownames(ret) <- NULL
  return (ret);
}

Refactor: Drop unused level of a factor variable

Name: refactor
Scenario: After subset a data frame, the factor columns may include 0 frequncy levels
Related:
1. drop = TRUE, e.g. problem.factor <- problem.factor[, drop = TRUE]
2. drop.levels() function in gdata package
References:
http://r.789695.n4.nabble.com/Refactor-all-factors-in-a-data-frame-td826749.html
http://www.r-bloggers.com/data-types-part-3-factors/
http://rwiki.sciviews.org/doku.php?id=tips:data-manip:drop_unused_levels

Code:
refactor <- function (aDf){
  cat <- sapply(aDf, is.factor);
  aDf[cat] <- lapply(aDf[cat], factor);

}