Purpose
I was asked by my Colleague and Board Member, Walt DeGrange, to put together some thoughts about R at the Junior, Middle, and Senior Levels. The recipient is someone who uses R as an analyst in that they use it as a tool to get things done, but not in the sense they would become professional R coders to the exclusion of their jobs.
Having this bit of homework made me stop to reflect on my own journey with R, and what appropriate bits of wisdom I would want to impart at various places along the trail.
But First… What is Data Science?
We define Data Science as the edge that connects “Statistics” with “Computer Programming”. Therefore, an effective Data Scientist is either a computer programmer who has learned Statistics beyond the entry level, or (in my case) a Statistician who has learned to code to support their work.
Why R?
Before covering why one should become proficient at R, we should probably touch on the strengths and weaknesses of the platform, and when it is (or isn’t) the right choice.
R is a computer programming language purpose-built for statistics. This means that if you are going to interact with R, you will be writing code. If this makes you uncomfortable, or you don’t think you would ever be a coder, then you should probably choose another platform. R is free, and - along with packages - can be downloaded from CRAN, which is the “Consolidated R Archive Network”.
There are many contributors to R, and many professional users. In addition to the base language, there are both packages (see below) as well as IDEs (Integrated Development Environments). There are several IDEs to choose from; the remainder of this piece will focus on RStudio.
Disadvantages
Having said this, R has some disadvantages and places where it probably isn’t the right tool. A few that come to mind (not exhaustive) are:
- If the dataset is small, and what needs to be done can be done quickly in native tool, such as Excel.
- If the delivery method is a Microsoft Product and the editors will want to change the graphs (R graphics objects are not rendered in MS-editable forms)
- If you hate to Code
- If R won’t run on your machine
Having discussed these caveats, we’re now ready to think about the lessons that an R user should have at every level. In the sections that follow I am going to restrict myself to a few sentences per issue. This is harder than it seems.
The Skill Recommendations
Basic
The entry-level R coder will need to figure out how to get R installed (as well as the IDE) and perform some basic tasks. Beyond this, there are some habits that the beginning R user will benefit from in their future development if they learn at the beginning.
Interacting with the IDE
Perhaps the first thing that a user needs to learn is how to leverage the IDE to its’ maximum advantage. For a standard R + R Studio setup this includes using some of the management functions, like History, and data import/export.
Understanding Data Types
R has several different atomic data types, several different composite data types. One of the first things a new useR needs to understand is how to choose and interact with these structures. This is foundational and everything builds upon it.
Base Package Plots
Because we’d like to do something with the data other than just stare at the screen, the new user should understand how to use the base plot functions, such as plot(), boxplot() and pairs(). While these methods will be largely deprecated when they move to the intermediate level, these are the analysts first line of defense.
Advanced Level
At the advanced level, the user will be able to rapidly gain insights from data. Some attributes (not all-inclusive) are:
Deploying your work
You’ve built your analysis, and now you want to share it. This requires learning tools such as Shiny, RMarkdown, Notebook and FlxDashBoard. These are integrated in the RStudio environment and feature one-click publishing. This isn’t hard, but you have to do it
This document was rendered in RMarkdown
Models
Building models requires some basic understanding of statistics, which presumably you have since you’re reading a manual on coding in R! Model building and evaluation requires learning about the r::base packages such as lm(), glm(), gam() but also learning about external packages such as Recursive Partitioning.
Writing code that others can use
You will eventually want to write code that other people will adopt and use. I’m not talking about writing your own packages, but rather following good practice with variable names, and also building chunks in Markdown / Shiny in a way that makes them easy for others to edit/collaborate with.
Wrapping it all up
These 9 building blocks will not make one a complete R expert, but instead will put them in a position to continue their own growth without external assistance, and instill in them good habits for a productive career in Data Science.
LS0tDQp0aXRsZTogIlRlYWNoaW5nIFIgaW4gVGhyZWUgTGV2ZWxzIg0KYXV0aG9yOiAgIkhhcnJpc29uIFNjaHJhbW0iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojUHVycG9zZQ0KDQpJIHdhcyBhc2tlZCBieSBteSBDb2xsZWFndWUgYW5kIEJvYXJkIE1lbWJlciwgV2FsdCBEZUdyYW5nZSwgdG8gcHV0IHRvZ2V0aGVyIHNvbWUgdGhvdWdodHMgYWJvdXQgUiBhdCB0aGUgSnVuaW9yLCBNaWRkbGUsIGFuZCBTZW5pb3IgTGV2ZWxzLiAgVGhlIHJlY2lwaWVudCBpcyBzb21lb25lIHdobyB1c2VzIFIgYXMgYW4gYW5hbHlzdCBpbiB0aGF0IHRoZXkgdXNlIGl0IGFzIGEgdG9vbCB0byBnZXQgdGhpbmdzIGRvbmUsIGJ1dCBub3QgaW4gdGhlIHNlbnNlIHRoZXkgd291bGQgYmVjb21lIHByb2Zlc3Npb25hbCBSIGNvZGVycyB0byB0aGUgZXhjbHVzaW9uIG9mIHRoZWlyIGpvYnMuDQoNCkhhdmluZyB0aGlzIGJpdCBvZiBob21ld29yayBtYWRlIG1lIHN0b3AgdG8gcmVmbGVjdCBvbiBteSBvd24gam91cm5leSB3aXRoIFIsIGFuZCB3aGF0IGFwcHJvcHJpYXRlIGJpdHMgb2Ygd2lzZG9tIEkgd291bGQgd2FudCB0byBpbXBhcnQgYXQgdmFyaW91cyBwbGFjZXMgYWxvbmcgdGhlIHRyYWlsLg0KDQojI0J1dCBGaXJzdC4uLiBXaGF0IGlzIERhdGEgU2NpZW5jZT8NCg0KV2UgZGVmaW5lICpEYXRhIFNjaWVuY2UqIGFzIHRoZSBlZGdlIHRoYXQgY29ubmVjdHMgIlN0YXRpc3RpY3MiIHdpdGggIkNvbXB1dGVyIFByb2dyYW1taW5nIi4gIFRoZXJlZm9yZSwgYW4gZWZmZWN0aXZlIERhdGEgU2NpZW50aXN0IGlzIGVpdGhlciBhIGNvbXB1dGVyIHByb2dyYW1tZXIgd2hvIGhhcyBsZWFybmVkIFN0YXRpc3RpY3MgYmV5b25kIHRoZSBlbnRyeSBsZXZlbCwgb3IgKGluIG15IGNhc2UpIGEgU3RhdGlzdGljaWFuIHdobyBoYXMgbGVhcm5lZCB0byBjb2RlIHRvIHN1cHBvcnQgdGhlaXIgd29yay4gDQoNCiMjV2h5IFI/DQoNCkJlZm9yZSBjb3ZlcmluZyB3aHkgb25lIHNob3VsZCBiZWNvbWUgcHJvZmljaWVudCBhdCBSLCB3ZSBzaG91bGQgcHJvYmFibHkgdG91Y2ggb24gdGhlIHN0cmVuZ3RocyBhbmQgd2Vha25lc3NlcyBvZiB0aGUgcGxhdGZvcm0sIGFuZCB3aGVuIGl0IGlzIChvciBpc24ndCkgdGhlIHJpZ2h0IGNob2ljZS4gIA0KDQpSIGlzIGEgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgcHVycG9zZS1idWlsdCBmb3Igc3RhdGlzdGljcy4gIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgYXJlIGdvaW5nIHRvIGludGVyYWN0IHdpdGggUiwgeW91IHdpbGwgYmUgd3JpdGluZyAqKmNvZGUqKi4gIElmIHRoaXMgbWFrZXMgeW91IHVuY29tZm9ydGFibGUsIG9yIHlvdSBkb24ndCB0aGluayB5b3Ugd291bGQgZXZlciBiZSBhIGNvZGVyLCB0aGVuIHlvdSBzaG91bGQgcHJvYmFibHkgY2hvb3NlIGFub3RoZXIgcGxhdGZvcm0uICBSIGlzIGZyZWUsIGFuZCAtIGFsb25nIHdpdGggcGFja2FnZXMgLSBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIENSQU4sIHdoaWNoIGlzIHRoZSAiQ29uc29saWRhdGVkIFIgQXJjaGl2ZSBOZXR3b3JrIi4gIA0KVGhlcmUgYXJlIG1hbnkgY29udHJpYnV0b3JzIHRvIFIsIGFuZCBtYW55IHByb2Zlc3Npb25hbCB1c2Vycy4gIEluIGFkZGl0aW9uIHRvIHRoZSBiYXNlIGxhbmd1YWdlLCB0aGVyZSBhcmUgYm90aCBwYWNrYWdlcyAoc2VlIGJlbG93KSBhcyB3ZWxsIGFzIElERXMgKEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnRzKS4gIFRoZXJlIGFyZSBzZXZlcmFsIElERXMgdG8gY2hvb3NlIGZyb207IHRoZSByZW1haW5kZXIgb2YgdGhpcyBwaWVjZSB3aWxsIGZvY3VzIG9uICoqUlN0dWRpbyoqLiAgDQoNCiMjRGlzYWR2YW50YWdlcw0KDQpIYXZpbmcgc2FpZCB0aGlzLCBSIGhhcyBzb21lIGRpc2FkdmFudGFnZXMgYW5kIHBsYWNlcyB3aGVyZSBpdCBwcm9iYWJseSBpc24ndCB0aGUgcmlnaHQgdG9vbC4gIEEgZmV3IHRoYXQgY29tZSB0byBtaW5kIChub3QgZXhoYXVzdGl2ZSkgYXJlOg0KDQogIDEuICBJZiB0aGUgZGF0YXNldCBpcyBzbWFsbCwgYW5kIHdoYXQgbmVlZHMgdG8gYmUgZG9uZSBjYW4gYmUgZG9uZSBxdWlja2x5IGluIG5hdGl2ZSB0b29sLCBzdWNoIGFzIEV4Y2VsLg0KICAyLiAgSWYgdGhlIGRlbGl2ZXJ5IG1ldGhvZCBpcyBhIE1pY3Jvc29mdCBQcm9kdWN0IGFuZCB0aGUgZWRpdG9ycyB3aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBncmFwaHMgKFIgZ3JhcGhpY3Mgb2JqZWN0cyBhcmUgbm90IHJlbmRlcmVkIGluIE1TLWVkaXRhYmxlIGZvcm1zKQ0KICAzLiAgSWYgeW91IGhhdGUgdG8gQ29kZQ0KICA0LiAgSWYgUiB3b24ndCBydW4gb24geW91ciBtYWNoaW5lDQogIA0KSGF2aW5nIGRpc2N1c3NlZCB0aGVzZSBjYXZlYXRzLCB3ZSdyZSBub3cgcmVhZHkgdG8gdGhpbmsgYWJvdXQgdGhlIGxlc3NvbnMgdGhhdCBhbiBSIHVzZXIgc2hvdWxkIGhhdmUgYXQgZXZlcnkgbGV2ZWwuICBJbiB0aGUgc2VjdGlvbnMgdGhhdCBmb2xsb3cgSSBhbSBnb2luZyB0byByZXN0cmljdCBteXNlbGYgdG8gYSBmZXcgc2VudGVuY2VzIHBlciBpc3N1ZS4gIFRoaXMgaXMgaGFyZGVyIHRoYW4gaXQgc2VlbXMuIA0KDQojVGhlIFNraWxsIFJlY29tbWVuZGF0aW9ucw0KDQojI0Jhc2ljDQoNClRoZSBlbnRyeS1sZXZlbCBSIGNvZGVyIHdpbGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBnZXQgUiBpbnN0YWxsZWQgKGFzIHdlbGwgYXMgdGhlIElERSkgYW5kIHBlcmZvcm0gc29tZSBiYXNpYyB0YXNrcy4gIEJleW9uZCB0aGlzLCB0aGVyZSBhcmUgc29tZSBoYWJpdHMgdGhhdCB0aGUgYmVnaW5uaW5nIFIgdXNlciB3aWxsIGJlbmVmaXQgZnJvbSBpbiB0aGVpciBmdXR1cmUgZGV2ZWxvcG1lbnQgaWYgdGhleSBsZWFybiBhdCB0aGUgYmVnaW5uaW5nLg0KDQojIyNJbnRlcmFjdGluZyB3aXRoIHRoZSBJREUNClBlcmhhcHMgdGhlIGZpcnN0IHRoaW5nIHRoYXQgYSB1c2VyIG5lZWRzIHRvIGxlYXJuIGlzIGhvdyB0byBsZXZlcmFnZSB0aGUgSURFIHRvIGl0cycgbWF4aW11bSBhZHZhbnRhZ2UuICBGb3IgYSBzdGFuZGFyZCBSICsgUiBTdHVkaW8gc2V0dXAgdGhpcyBpbmNsdWRlcyB1c2luZyBzb21lIG9mIHRoZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgbGlrZSBIaXN0b3J5LCBhbmQgZGF0YSBpbXBvcnQvZXhwb3J0Lg0KDQojIyNVbmRlcnN0YW5kaW5nIERhdGEgVHlwZXMNClIgaGFzIHNldmVyYWwgZGlmZmVyZW50IGF0b21pYyBkYXRhIHR5cGVzLCBzZXZlcmFsIGRpZmZlcmVudCBjb21wb3NpdGUgZGF0YSB0eXBlcy4gIE9uZSBvZiB0aGUgZmlyc3QgdGhpbmdzIGEgbmV3IHVzZVIgbmVlZHMgdG8gdW5kZXJzdGFuZCBpcyBob3cgdG8gY2hvb3NlIGFuZCBpbnRlcmFjdCB3aXRoIHRoZXNlIHN0cnVjdHVyZXMuICBUaGlzIGlzICoqZm91bmRhdGlvbmFsKiogYW5kIGV2ZXJ5dGhpbmcgYnVpbGRzIHVwb24gaXQuICANCg0KIyMjQmFzZSBQYWNrYWdlIFBsb3RzDQpCZWNhdXNlIHdlJ2QgbGlrZSB0byBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZGF0YSBvdGhlciB0aGFuIGp1c3Qgc3RhcmUgYXQgdGhlIHNjcmVlbiwgdGhlIG5ldyB1c2VyIHNob3VsZCB1bmRlcnN0YW5kIGhvdyB0byB1c2UgdGhlIGJhc2UgcGxvdCBmdW5jdGlvbnMsIHN1Y2ggYXMgcGxvdCgpLCBib3hwbG90KCkgYW5kIHBhaXJzKCkuICBXaGlsZSB0aGVzZSBtZXRob2RzIHdpbGwgYmUgbGFyZ2VseSBkZXByZWNhdGVkIHdoZW4gdGhleSBtb3ZlIHRvIHRoZSBpbnRlcm1lZGlhdGUgbGV2ZWwsIHRoZXNlIGFyZSB0aGUgYW5hbHlzdHMgZmlyc3QgbGluZSBvZiBkZWZlbnNlLg0KDQojI0ludGVybWVkaWF0ZSBMZXZlbA0KQXQgdGhlIGludGVybWVkaWF0ZSBsZXZlbCwgdGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gYmVnaW4gYnVpbGRpbmcgdGhlaXIgb3duIGNvZGUuICBUaGUga2V5IGVuYWJsZXJzIGhlcmUgYXJlOg0KDQojIyNGaW5kaW5nIGFuZCB1c2luZyBvdGhlciBwZW9wbGUncyBjb2RlDQpNb3N0IHRoaW5ncyB0aGF0IGEgdXNlciB3b3VsZCB3YW50IHRvIGRvIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUgLSBhbmQgcHVibGlzaGVkIC0gYnkgc29tZW9uZSBlbHNlLiAgVGhlIHVzZXIgYXQgdGhpcyBzdGFnZSBzaG91bGQgYmUgYWRlcHQgYXQgZmluZGluZyBuZXcgcGFja2FnZXMgaW4gQ1JBTiwgaW5zdGFsbGluZyB0aGVtLCBhbmQgaW50ZWdyYXRpbmcgd2l0aCB0aGVpciBvd24gY29kZS4NCg0KIyMjRmluZGluZyBIZWxwDQpZb3VyIGNvbGxlYWd1ZXMgd2lsbCByYXBpZGx5IGJlY29tZSBmcnVzdHJhdGVkIHdpdGggeW91IGlmIHlvdSBhcmUgYWx3YXlzIGtub2NraW5nIG9uIHRoZWlyIGRvb3JzLiAgUiBoYXMgKmxvdHMqIG9mIG9ubGluZSByZXNvdXJjZXMgYXZhaWxhYmxlLCBidXQgeW91IGhhdmUgdG8ga25vdyB3aGVyZSB0byBmaW5kIHRoZW0uICBUaGlzIGlzbid0IGp1c3QgZ29vZ2xpbmcgJ3N0YWNrIG92ZXJmbG93JywgYnV0IHJhdGhlciB0aGUgZmluZSBhcnQgb2YgbWFraW5nIGEgcXVlcnkgdGhhdCB3aWxsIGFjdHVhbGx5IGZpbmQgeW91IGhlbHA6ICBFeGFtcGxlczoNCg0KKipCYWQ6ICBJIEhBVEUgR0dQTE9UISEgSVQgRE9FU04iVCBXT1JLISEhKioNCg0KKipHb29kOiAgciBnZ3Bsb3QyIHJvdGF0ZSB4IGF4aXMgZmFjdG9ycyoqDQoNCiMjI0FwcGx5aW5nIGEgRnVuY3Rpb24gYWNyb3NzIGEgVmVjdG9yIGFuZCBQcm9ncmFtIEZsb3cNCioqUmVhbCoqIFIgcHJvZ3JhbW1lcnMgd2lsbCB0ZWxsIHlvdSB0aGF0IHlvdSBzaG91bGQgbmV2ZXIgd3JpdGUgYSBsb29wLCBidXQgaW4gcHJhY3RpY2UsIHlvdSBlbmQgdXAgd3JpdGluZyBsb29wcyBldmVyeSBub3cgYW5kIGFnYWluIGZvciByZXBldGl0aXZlIHRhc2tzLiAgVGhpcyBpbmNsdWRlcyBsb29wcywgdGhlIGxhcHBseSgpIGZhbWlseSBvZiBmdW5jdGlvbnMsIGFuZCBhbHNvICpkcGx5ciouDQoNCipBbiBleHBlcmllbmNlZCBSIHVzZXIgd2lsbCBzZWUgdGhhdCB0aGUgY2Fwc3RvbmUgb2YgdGhpcyBsZXZlbCB3aWxsIGJlIHRvIGVmZmVjdGl2ZWx5IGluc3RhbGwgYW5kIHVzZSB0aGUgJ0hhZGxleXZlcnNlJyoNCg0KIyNBZHZhbmNlZCBMZXZlbA0KQXQgdGhlIGFkdmFuY2VkIGxldmVsLCB0aGUgdXNlciB3aWxsIGJlIGFibGUgdG8gcmFwaWRseSBnYWluIGluc2lnaHRzIGZyb20gZGF0YS4gIFNvbWUgYXR0cmlidXRlcyAobm90IGFsbC1pbmNsdXNpdmUpIGFyZToNCg0KIyMjRGVwbG95aW5nIHlvdXIgd29yaw0KWW91J3ZlIGJ1aWx0IHlvdXIgYW5hbHlzaXMsIGFuZCBub3cgeW91IHdhbnQgdG8gc2hhcmUgaXQuICBUaGlzIHJlcXVpcmVzIGxlYXJuaW5nIHRvb2xzIHN1Y2ggYXMgKlNoaW55KiwgKlJNYXJrZG93biosICpOb3RlYm9vayogYW5kICpGbHhEYXNoQm9hcmQqLiAgVGhlc2UgYXJlIGludGVncmF0ZWQgaW4gdGhlIFJTdHVkaW8gZW52aXJvbm1lbnQgYW5kIGZlYXR1cmUgb25lLWNsaWNrIHB1Ymxpc2hpbmcuICAqVGhpcyBpc24ndCBoYXJkLCBidXQgeW91IGhhdmUgdG8gZG8gaXQqDQoNCioqVGhpcyBkb2N1bWVudCB3YXMgcmVuZGVyZWQgaW4gUk1hcmtkb3duKioNCg0KIyMjTW9kZWxzDQpCdWlsZGluZyBtb2RlbHMgcmVxdWlyZXMgc29tZSBiYXNpYyB1bmRlcnN0YW5kaW5nIG9mIHN0YXRpc3RpY3MsIHdoaWNoIHByZXN1bWFibHkgeW91IGhhdmUgc2luY2UgeW91J3JlIHJlYWRpbmcgYSBtYW51YWwgb24gY29kaW5nIGluIFIhICBNb2RlbCBidWlsZGluZyBhbmQgZXZhbHVhdGlvbiByZXF1aXJlcyBsZWFybmluZyBhYm91dCB0aGUgcjo6YmFzZSBwYWNrYWdlcyBzdWNoIGFzIGxtKCksIGdsbSgpLCBnYW0oKSBidXQgYWxzbyBsZWFybmluZyBhYm91dCBleHRlcm5hbCBwYWNrYWdlcyBzdWNoIGFzIFJlY3Vyc2l2ZSBQYXJ0aXRpb25pbmcuICANCg0KIyMjV3JpdGluZyBjb2RlIHRoYXQgb3RoZXJzIGNhbiB1c2UNCllvdSB3aWxsIGV2ZW50dWFsbHkgd2FudCB0byB3cml0ZSBjb2RlIHRoYXQgb3RoZXIgcGVvcGxlIHdpbGwgYWRvcHQgYW5kIHVzZS4gIEknbSBub3QgdGFsa2luZyBhYm91dCB3cml0aW5nIHlvdXIgb3duIHBhY2thZ2VzLCBidXQgcmF0aGVyIGZvbGxvd2luZyBnb29kIHByYWN0aWNlIHdpdGggdmFyaWFibGUgbmFtZXMsIGFuZCBhbHNvIGJ1aWxkaW5nIGNodW5rcyBpbiBNYXJrZG93biAvIFNoaW55IGluIGEgd2F5IHRoYXQgbWFrZXMgdGhlbSBlYXN5IGZvciBvdGhlcnMgdG8gZWRpdC9jb2xsYWJvcmF0ZSB3aXRoLiAgDQoNCiNXcmFwcGluZyBpdCBhbGwgdXANClRoZXNlIDkgYnVpbGRpbmcgYmxvY2tzIHdpbGwgbm90IG1ha2Ugb25lIGEgY29tcGxldGUgUiBleHBlcnQsIGJ1dCBpbnN0ZWFkIHdpbGwgcHV0IHRoZW0gaW4gYSBwb3NpdGlvbiB0byBjb250aW51ZSB0aGVpciBvd24gZ3Jvd3RoIHdpdGhvdXQgZXh0ZXJuYWwgYXNzaXN0YW5jZSwgYW5kIGluc3RpbGwgaW4gdGhlbSBnb29kIGhhYml0cyBmb3IgYSBwcm9kdWN0aXZlIGNhcmVlciBpbiBEYXRhIFNjaWVuY2UuIA==