Yesterday we saw a beautiful example of panel charts with R. Today let me show you how to create the same (or even better) with Power BI & R.

What you need:
- Power BI Desktop and R
- Raw data set – rem-data.csv
Creating Panel Charts in Power BI with R
- Load CSV data in to Power BI
- Edit the query in so we can transform the data in to Pivot shape in Power Query
- Apply below steps in Power Query
- Group data by Group and Branch with aggregations on count (named Branch Count) and All rows (named Ratings)

- We get a totals by group and branch level.
- Expand Ratings table and show only Ratings column
- This creates a table with all group, branch and rating combinations along with branch total
- Group again, this time on Group, Branch, Branch total and Ratings with aggregation on count.

- Calculate count as percent of Branch count
- Format the percentage as percent
- Close and apply to Load this data in to Power BI
- Group data by Group and Branch with aggregations on count (named Branch Count) and All rows (named Ratings)
- Insert R script visualization
- Add Group, Branch, Ratings and Pct to values area. This creates a dataframe with all 4 columns.
- Add below R script and your visualization is ready.
library(tidyverse)
ggplot(data=dataset) +
geom_bar(aes(x=Rating, y=Pct), stat="identity")+
scale_x_discrete(limits = c("NME","AME","SP","OP","NR"))+
facet_wrap(~Branch, nrow=1)+
theme(strip.text.x = element_text(size = 8))
To run the R script, simply press play button in R script editor pane.
Enhancing your visualization – Adding a slicer on Group
This creates a truly powerful interactive panel chart in Power BI. Simply add Group as a slicer and play with it. Every time you select a new Group, Power BI runs the R script with filtered data fed to the dataframe. There is a second or two lag, but the wait is totally worth it. 🙂
Creating Interactive Panel charts in Power BI with R – Video tut
Here is a video outlining the entire process along with some tips on how to use R in Power BI. Check it out below or on Chandoo.org YouTube channel.
Download Power BI workbook
Click here to download Power BI workbook for this. You may need to adjust the data source settings. Play with the slicer to refresh the R panel charts.
Have you tried Power BI yet?
I am playing with Power BI for last year or so and I am in love. You are going to hear more about it on Chandoo.org for sure.
What about you? Have you played with Power BI yet? What are your thoughts?
Related: Introduction to Power Query.

















6 Responses to “Make VBA String Comparisons Case In-sensitive [Quick Tip]”
Another way to test if Target.Value equal a string constant without regard to letter casing is to use the StrCmp function...
If StrComp("yes", Target.Value, vbTextCompare) = 0 Then
' Do something
End If
That's a cool way to compare. i just converted my values to strings and used the above code to compare. worked nicely
Thanks!
In case that option just needs to be used for a single comparison, you could use
If InStr(1, "yes", Target.Value, vbTextCompare) Then
'do something
End If
as well.
Nice tip, thanks! I never even thought to think there might be an easier way.
Regarding Chronology of VB in general, the Option Compare pragma appears at the very beginning of VB, way before classes and objects arrive (with VB6 - around 2000).
Today StrComp() and InStr() function offers a more local way to compare, fully object, thus more consistent with object programming (even if VB is still interpreted).
My only question here is : "what if you want to binary compare locally with re-entering functions or concurrency (with events) ?". This will lead to a real nightmare and probably a big nasty mess to debug.
By the way, congrats for you Millions/month visits 🙂
This is nice article.
I used these examples to help my understanding. Even Instr is similar to Find but it can be case sensitive and also case insensitive.
Hope the examples below help.
Public Sub CaseSensitive2()
If InStr(1, "Look in this string", "look", vbBinaryCompare) = 0 Then
MsgBox "woops, no match"
Else
MsgBox "at least one match"
End If
End Sub
Public Sub CaseSensitive()
If InStr("Look in this string", "look") = 0 Then
MsgBox "woops, no match"
Else
MsgBox "at least one match"
End If
End Sub
Public Sub NotCaseSensitive()
'doing alot of case insensitive searching and whatnot, you can put Option Compare Text
If InStr(1, "Look in this string", "look", vbTextCompare) = 0 Then
MsgBox "woops, no match"
Else
MsgBox "at least one match"
End If
End Sub