Why not Stata, or SPSS, or …?
The number of scholarly articles found by Google Scholar 
Number of people who follow each software on LinkedIn and Quara 
Number of R packages available on its main distribution site 
Base R and most R packages are available at cran.r-project.org
There are thousands of R packages
Commonly used packages
R Studio can be downloaded from here.
* package
* library
* workspace
* environment
* class/object
- dataframe
- vector
install.packages(ggplot2)
update.packages()
update.packages(ggplot2)
library(ggplot2) # Returns error
require(ggplot2) # Returns warning
sessionInfo()
ls()
ls("package:ggplot2")
rm(objectname)
rm(list = ls())
?keyword # Help files for functions
??keyword # Search R documentation
2 + 3
## [1] 5
2 * 5
## [1] 10
5 / 0
## [1] Inf
0 / 0
## [1] NaN
is.na(10 / 0)
## [1] FALSE
is.finite(10 / 0)
## [1] FALSE
2 * pi
## [1] 6.283185
sqrt(4^4)
## [1] 16
2 * 3 + 4
## [1] 10
15 %/% 4
## [1] 3
15 %% 4
## [1] 3
1 & 0
## [1] FALSE
1 | 0
## [1] TRUE
3 < 6
## [1] TRUE
3.33 <= 10 / 3
## [1] TRUE
TRUE & FALSE
## [1] FALSE
TRUE | FALSE
## [1] TRUE
FALSE | !FALSE
## [1] TRUE
TRUE && FALSE
## [1] FALSE
FALSE && TRUE
## [1] FALSE
exp(1)
## [1] 2.718282
log(exp(1))
## [1] 1
log10(10)
## [1] 1
log2(2^3)
## [1] 3
round(10/3, digits = 2)
## [1] 3.33
3*round(10/3, digits = 2)
## [1] 9.99
ceiling(10/3)
## [1] 4
floor(10/3)
## [1] 3
a <- 5
b = 3L
a * b
## [1] 15
c <- 1:3
c
## [1] 1 2 3
(c <- 100:103)
## [1] 100 101 102 103
d <- c(1, 2, 3, 4, 5)
e <- c(1:5)
f <- c(1, 2, "a", "b", 5)
ls()
## [1] "a" "a1" "a2" "af" "av" "b"
## [7] "c" "c1" "cdata" "d" "date1" "date2"
## [13] "date3" "dc" "dd" "df" "dr" "dt"
## [19] "DT" "e" "ee" "f" "fdata" "fdataM"
## [25] "fs" "hdata" "id" "kelas" "kg" "lelas"
## [31] "lg" "melas" "mg" "model1" "model2" "model3"
## [37] "model4" "model5" "model6" "nf" "nobs" "ns"
## [43] "nt" "re" "sdata" "sect" "sectq" "sM"
## [49] "sPrice" "sPriceM" "tab" "tc" "theme_et" "year"
ls.str()
## a : num 5
## a1 : num [1:100000] 123456 123456 123456 123456 123456 ...
## a2 : int [1:100000] 123456 123456 123456 123456 123456 123456 123456 123456 123456 123456 ...
## af : Factor w/ 3 levels "Chemicals","Food industry",..: 1 2 2 1 1 2 2 2 3 3 ...
## av : chr [1:100000] "Chemicals" "Food industry" "Food industry" "Chemicals" ...
## b : int 3
## c : int [1:4] 100 101 102 103
## c1 : List of 10
## $ data :'data.frame': 60 obs. of 3 variables:
## $ layers :List of 1
## $ scales :Classes 'ScalesList', 'ggproto', 'gg' <ggproto object: Class ScalesList, gg>
## add: function
## clone: function
## find: function
## get_scales: function
## has_scale: function
## input: function
## n: function
## non_position_scales: function
## scales: list
## super: <ggproto object: Class ScalesList, gg>
## $ mapping :List of 3
## $ theme :List of 1
## $ coordinates:Classes 'CoordCartesian', 'Coord', 'ggproto', 'gg' <ggproto object: Class CoordCartesian, Coord, gg>
## aspect: function
## backtransform_range: function
## clip: on
## default: TRUE
## distance: function
## expand: TRUE
## is_free: function
## is_linear: function
## labels: function
## limits: list
## modify_scales: function
## range: function
## render_axis_h: function
## render_axis_v: function
## render_bg: function
## render_fg: function
## setup_data: function
## setup_layout: function
## setup_panel_guides: function
## setup_panel_params: function
## setup_params: function
## train_panel_guides: function
## transform: function
## super: <ggproto object: Class CoordCartesian, Coord, gg>
## $ facet :Classes 'FacetNull', 'Facet', 'ggproto', 'gg' <ggproto object: Class FacetNull, Facet, gg>
## compute_layout: function
## draw_back: function
## draw_front: function
## draw_labels: function
## draw_panels: function
## finish_data: function
## init_scales: function
## map_data: function
## params: list
## setup_data: function
## setup_params: function
## shrink: TRUE
## train_scales: function
## vars: function
## super: <ggproto object: Class FacetNull, Facet, gg>
## $ plot_env :<environment: R_GlobalEnv>
## $ labels :List of 4
## $ guides :List of 1
## cdata : Classes 'data.table' and 'data.frame': 17137 obs. of 18 variables:
## $ id : int 1 1 1 1 1 1 1 1 1 1 ...
## $ year: int 1 2 4 5 7 8 9 10 11 12 ...
## $ sect: int 1 1 1 1 1 1 1 1 1 1 ...
## $ kg : num -0.02096 0.00982 0.03999 0.01973 -0.01512 ...
## $ lg : num -0.00013 0.0095 0.01201 -0.01735 0.01952 ...
## $ mg : num -0.000938 0.001272 0.023565 -0.005288 -0.005527 ...
## $ tc : num 0.01304 0.01502 0.00108 0.02684 -0.00456 ...
## $ fs : num 3.72 3.72 3.72 3.72 3.72 ...
## $ re : num 1.86 1.86 1.86 1.86 1.86 ...
## $ ee : num -0.0548 0.16695 -0.00334 0.06335 -0.00687 ...
## $ lk : num 3.64 3.68 3.94 4.02 4.04 ...
## $ ll : num 3.72 3.75 3.84 3.78 3.94 ...
## $ lm : num 3.72 3.72 3.79 3.77 3.81 ...
## $ lA : num 3.77 3.82 3.87 3.97 3.98 ...
## $ fe : num 3.02 3.02 3.02 3.02 3.02 ...
## $ lq : num 7.61 7.9 7.87 8.02 8.02 ...
## $ lqre: num 9.47 9.77 9.74 9.88 9.89 ...
## $ lqfe: num 10.6 10.9 10.9 11 11 ...
## d : num [1:5] 1 2 3 4 5
## date1 : Date[1:1], format: "2016-02-28"
## date2 : Date[1:1], format: "2010-02-28"
## date3 : Date[1:1], format: NA
## dc : 'data.frame': 5 obs. of 2 variables:
## $ d: num 10 20 30 40 50
## $ e: chr "a1" "a2" "b3" "d3" ...
## dd : 'data.frame': 10 obs. of 6 variables:
## $ a: num 1 2 4 2 6 3 5 8 1 10
## $ b: int 2 3 2 3 2 3 2 3 2 3
## $ c: int 2 2 2 2 2 3 3 3 3 3
## $ d: int 2 3 2 3 2 3 2 3 2 3
## $ e: num 0 20 40 60 80 100 120 140 160 180
## $ f: num 0 5 10 15 20 25 30 35 40 45
## df : 'data.frame': 6 obs. of 5 variables:
## $ a: num 1 2 3 4 5 100
## $ b: num 4 3 6 1 1 200
## $ c: chr "a" "a" "b" "c" ...
## $ d: num 10 20 30 40 50 400
## $ e: chr "a1" "a2" "b3" "d3" ...
## dr : num [1:5] 100 200 300 400 500
## dt : 'data.frame': 1000 obs. of 5 variables:
## $ a: int 1 2 3 4 5 6 7 8 9 10 ...
## $ b: num -1.4341 -0.0472 -1.5971 1.4775 -1.3937 ...
## $ c: int 1 2 1 2 1 2 1 2 1 2 ...
## $ d: int 3 4 1 3 5 3 1 5 5 2 ...
## $ e: num 0.428 6.965 0.197 6.174 -1.098 ...
## DT : 'data.frame': 60 obs. of 3 variables:
## $ country: chr "A" "A" "A" "A" ...
## $ date : int 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 ...
## $ gdp : num 1.001 0.989 0.997 0.979 1 ...
## e : int [1:5] 1 2 3 4 5
## ee : num [1:20000] -0.0548 0.16695 -0.16486 -0.00334 0.06335 ...
## f : chr [1:5] "1" "2" "a" "b" "5"
## fdata : Classes 'data.table' and 'data.frame': 20000 obs. of 22 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ year : int 1 1 1 1 1 1 1 1 1 1 ...
## $ sect : int 1 1 1 1 1 1 1 1 1 1 ...
## $ re : num 1.86 1.86 1.86 1.86 1.86 ...
## $ lk : num 3.64 3.55 3.68 3.8 3.83 ...
## $ ll : num 3.72 3.64 3.76 3.75 3.81 ...
## $ lm : num 3.72 3.74 NA 3.75 3.74 ...
## $ lA : num 3.77 3.79 3.68 3.77 3.79 ...
## $ lq : num 7.61 7.71 7.55 7.59 7.83 ...
## $ lqre : num 9.47 9.58 9.41 9.45 9.7 ...
## $ lqfe : num 10.6 10.8 10.8 11.1 11.1 ...
## $ Q : num 2017 2235 1901 1977 2520 ...
## $ K : num 38.2 34.8 39.8 44.8 45.9 ...
## $ L : num 41.2 38 42.8 42.4 45.2 ...
## $ M : num 41.1 42.1 NA 42.6 41.9 ...
## $ sQ : num 218327 218327 218327 218327 218327 ...
## $ sL : num 4229 4229 4229 4229 4229 ...
## $ sM : num 3887 3887 3887 3887 3887 ...
## $ lqdev: num -0.721 -0.619 -0.78 -0.741 -0.498 ...
## $ lkdev: num -0.473 -0.567 -0.43 -0.313 -0.287 ...
## $ lldev: num -0.437 -0.518 -0.399 -0.411 -0.346 ...
## $ lmdev: num -0.242 -0.217 NA -0.205 -0.222 ...
## fdataM : Classes 'data.table' and 'data.frame': 20000 obs. of 16 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ year : int 1 1 1 1 1 1 1 1 1 1 ...
## $ sect : int 1 1 1 1 1 1 1 1 1 1 ...
## $ re : num 1.86 1.86 1.86 1.86 1.86 ...
## $ lk : num 3.64 3.55 3.68 3.8 3.83 ...
## $ ll : num 3.72 3.64 3.76 3.75 3.81 ...
## $ lm : num 3.72 3.74 NA 3.75 3.74 ...
## $ lA : num 3.77 3.79 3.68 3.77 3.79 ...
## $ lq : num 7.61 7.71 7.55 7.59 7.83 ...
## $ lqre : num 9.47 9.58 9.41 9.45 9.7 ...
## $ lqfe : num 10.6 10.8 10.8 11.1 11.1 ...
## $ Q : num 2017 2235 1901 1977 2520 ...
## $ K : num 38.2 34.8 39.8 44.8 45.9 ...
## $ L : num 41.2 38 42.8 42.4 45.2 ...
## $ M : num 41.1 42.1 NA 42.6 41.9 ...
## $ price: num 0.993 0.993 0.993 0.993 0.993 ...
## fs : num 3.72
## hdata : Classes 'data.table' and 'data.frame': 20000 obs. of 18 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ year: int 1 1 1 1 1 1 1 1 1 1 ...
## $ sect: int 1 1 1 1 1 1 1 1 1 1 ...
## $ re : num 1.86 1.86 1.86 1.86 1.86 ...
## $ lk : num 3.64 3.55 3.68 3.8 3.83 ...
## $ ll : num 3.72 3.64 3.76 3.75 3.81 ...
## $ lm : num 3.72 3.74 NA 3.75 3.74 ...
## $ lA : num 3.77 3.79 3.68 3.77 3.79 ...
## $ lq : num 7.61 7.71 7.55 7.59 7.83 ...
## $ lqre: num 9.47 9.58 9.41 9.45 9.7 ...
## $ lqfe: num 10.6 10.8 10.8 11.1 11.1 ...
## $ Q : num 2017 2235 1901 1977 2520 ...
## $ K : num 38.2 34.8 39.8 44.8 45.9 ...
## $ L : num 41.2 38 42.8 42.4 45.2 ...
## $ M : num 41.1 42.1 NA 42.6 41.9 ...
## $ sQ : num 218327 218327 218327 218327 218327 ...
## $ sL : num 4229 4229 4229 4229 4229 ...
## $ sM : num 3887 3887 3887 3887 3887 ...
## id : int [1:20000] 1 1 1 1 1 1 1 1 1 1 ...
## kelas : num 0.1
## kg : num [1:20000] -0.02096 0.00982 0.03127 0.03999 0.01973 ...
## lelas : num 0.2
## lg : num [1:20000] -0.00013 0.0095 0.01207 0.01201 -0.01735 ...
## melas : num 0.75
## mg : num [1:20000] -0.000938 0.001272 -0.004523 0.023565 -0.005288 ...
## model1 : List of 13
## $ coefficients : Named num [1:5] 3.8424 0.1122 0.1584 0.747 0.0386
## $ residuals : Named num [1:17137] -0.0456 0.0623 -0.1149 0.1278 -0.0186 ...
## $ effects : Named num [1:17137] -1089.3 35.9 30.1 17.8 12.2 ...
## $ rank : int 5
## $ fitted.values: Named num [1:17137] 7.65 7.65 7.7 7.7 7.68 ...
## $ assign : int [1:5] 0 1 2 3 4
## $ qr :List of 5
## $ df.residual : int 17132
## $ na.action : 'omit' Named int [1:2863] 3 13 16 25 27 28 30 43 54 69 ...
## $ xlevels : Named list()
## $ call : language lm(formula = lq ~ lk + ll + lm + year, data = fdata)
## $ terms :Classes 'terms', 'formula' language lq ~ lk + ll + lm + year
## $ model :'data.frame': 17137 obs. of 5 variables:
## model2 : List of 13
## $ coefficients : Named num [1:5] -0.4072 0.1137 0.1563 0.7453 0.0386
## $ residuals : Named num [1:17137] -0.0505 0.0573 -0.12 0.1228 -0.0239 ...
## $ effects : Named num [1:17137] 0.362 35.997 29.991 17.764 12.211 ...
## $ rank : int 5
## $ fitted.values: Named num [1:17137] -0.671 -0.676 -0.621 -0.621 -0.643 ...
## $ assign : int [1:5] 0 1 2 3 4
## $ qr :List of 5
## $ df.residual : int 17132
## $ na.action : 'omit' Named int [1:2863] 3 13 16 25 27 28 30 43 54 69 ...
## $ xlevels : Named list()
## $ call : language lm(formula = lqdev ~ lkdev + lldev + lmdev + year, data = fdata)
## $ terms :Classes 'terms', 'formula' language lqdev ~ lkdev + lldev + lmdev + year
## $ model :'data.frame': 17137 obs. of 5 variables:
## model3 : List of 13
## $ coefficients : Named num [1:5] 5.7072 0.1122 0.1584 0.747 0.0386
## $ residuals : Named num [1:17137] -0.0456 0.0623 -0.1149 0.1278 -0.0186 ...
## $ effects : Named num [1:17137] -1333.4 35.9 30.1 17.8 12.2 ...
## $ rank : int 5
## $ fitted.values: Named num [1:17137] 9.52 9.51 9.57 9.57 9.55 ...
## $ assign : int [1:5] 0 1 2 3 4
## $ qr :List of 5
## $ df.residual : int 17132
## $ na.action : 'omit' Named int [1:2863] 3 13 16 25 27 28 30 43 54 69 ...
## $ xlevels : Named list()
## $ call : language lm(formula = lqre ~ lk + ll + lm + year, data = fdata)
## $ terms :Classes 'terms', 'formula' language lqre ~ lk + ll + lm + year
## $ model :'data.frame': 17137 obs. of 5 variables:
## model4 : List of 13
## $ coefficients : Named num [1:5] 5.8923 0.2864 0.2686 0.7892 0.0267
## $ residuals : Named num [1:17137] -0.2695 -0.0175 0.0901 0.1107 -0.0281 ...
## $ effects : Named num [1:17137] -1516.9 40.44 28.07 17.02 8.44 ...
## $ rank : int 5
## $ fitted.values: Named num [1:17137] 10.9 10.9 11 11 11 ...
## $ assign : int [1:5] 0 1 2 3 4
## $ qr :List of 5
## $ df.residual : int 17132
## $ na.action : 'omit' Named int [1:2863] 3 13 16 25 27 28 30 43 54 69 ...
## $ xlevels : Named list()
## $ call : language lm(formula = lqfe ~ lk + ll + lm + year, data = fdata)
## $ terms :Classes 'terms', 'formula' language lqfe ~ lk + ll + lm + year
## $ model :'data.frame': 17137 obs. of 5 variables:
## model5 : List of 12
## $ coefficients: Named num [1:23] 3.7426 0.1325 0.1649 0.7557 0.0419 ...
## $ vcov : num [1:23, 1:23] 4.21e-03 -9.44e-05 -4.77e-04 -5.44e-04 1.61e-05 ...
## $ residuals : 'pseries' Named num [1:17137] -0.03629 0.1995 -0.00145 0.12077 -0.0131 ...
## $ df.residual : int 17114
## $ formula :'Formula' with 1 left-hand and 1 right-hand side: lq ~ lk + ll + lm + year
## ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
## $ model :Classes 'pdata.frame' and 'data.frame': 17137 obs. of 5 variables:
## $ ercomp :List of 2
## $ assign : int [1:23] 0 1 2 3 4 4 4 4 4 4 ...
## $ contrasts :List of 1
## $ args :List of 6
## $ aliased : Named logi [1:23] FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ call : language plm(formula = lq ~ lk + ll + lm + year, data = fdata, effect = "individual", model = "random")
## model6 : List of 11
## $ coefficients: Named num [1:22] 0.137 0.1663 0.7574 0.0416 0.0805 ...
## $ vcov : num [1:22, 1:22] 4.71e-05 -1.84e-05 -7.05e-08 -8.27e-07 -1.89e-06 ...
## $ residuals : 'pseries' Named num [1:17137] -0.034851 0.200957 -0.000832 0.12137 -0.012373 ...
## $ df.residual : int 16190
## $ formula :'Formula' with 1 left-hand and 1 right-hand side: lq ~ lk + ll + lm + year
## ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
## $ model :Classes 'pdata.frame' and 'data.frame': 17137 obs. of 5 variables:
## $ assign : int [1:23] 0 1 2 3 4 4 4 4 4 4 ...
## $ contrasts :List of 1
## $ args :List of 6
## $ aliased : Named logi [1:22] FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ call : language plm(formula = lq ~ lk + ll + lm + year, data = fdata, effect = "individual", model = "within")
## nf : num 1000
## nobs : num 20000
## ns : num 10
## nt : num 20
## re : num 1.86
## sdata : Classes 'data.table' and 'data.frame': 200 obs. of 5 variables:
## $ sect: int 1 1 1 1 1 1 1 1 1 1 ...
## $ year: int 1 2 3 4 5 6 7 8 9 10 ...
## $ sQ : num 218327 236123 245319 271771 289261 ...
## $ sL : num 4229 4290 4529 4569 4654 ...
## $ sM : num 3887 4000 4134 4203 4431 ...
## sect : int [1:20000] 1 1 1 1 1 1 1 1 1 1 ...
## sectq : Classes 'data.table' and 'data.frame': 200 obs. of 4 variables:
## $ sect : int 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 1 2 3 4 5 6 7 8 9 10 ...
## $ mean.lq: num 7.68 7.76 7.8 7.9 7.96 ...
## $ sd.lq : num 0.103 0.142 0.138 0.144 0.152 ...
## sM : Classes 'data.table' and 'data.frame': 4 obs. of 2 variables:
## $ id : num 1 1 2 2
## $ year: num 10 20 10 20
## sPrice : Classes 'data.table' and 'data.frame': 20 obs. of 11 variables:
## $ year: int 1 2 3 4 5 6 7 8 9 10 ...
## $ p1 : num 0.993 1.055 1.057 1.098 1.114 ...
## $ p2 : num 0.898 0.953 1.052 1.055 1.056 ...
## $ p3 : num 1.04 1.08 1.11 1.15 1.17 ...
## $ p4 : num 1.03 1.06 1.06 1.11 1.18 ...
## $ p5 : num 0.991 0.946 0.942 1.036 1.099 ...
## $ p6 : num 1.16 1.2 1.26 1.12 1.17 ...
## $ p7 : num 1.02 1.09 1.15 1.19 1.25 ...
## $ p8 : num 1.09 1.08 1.11 1.19 1.31 ...
## $ p9 : num 1.04 1.05 1.13 1.16 1.2 ...
## $ p10 : num 1.05 1.1 1.15 1.15 1.19 ...
## sPriceM : Classes 'data.table' and 'data.frame': 200 obs. of 3 variables:
## $ year : int 1 2 3 4 5 6 7 8 9 10 ...
## $ price: num 0.993 1.055 1.057 1.098 1.114 ...
## $ sect : num 1 1 1 1 1 1 1 1 1 1 ...
## tab : 'xtabs' int [1:2, 1:5] 93 84 85 89 89 86 84 77 99 84
## tc : num [1:20000] 0.01304 0.01502 0.01063 0.00108 0.02684 ...
## theme_et : function (base_size = 12, base_family = "ubuntu")
## year : int [1:20000] 1 2 3 4 5 6 7 8 9 10 ...
rm(a)
ls()
## [1] "a1" "a2" "af" "av" "b" "c"
## [7] "c1" "cdata" "d" "date1" "date2" "date3"
## [13] "dc" "dd" "df" "dr" "dt" "DT"
## [19] "e" "ee" "f" "fdata" "fdataM" "fs"
## [25] "hdata" "id" "kelas" "kg" "lelas" "lg"
## [31] "melas" "mg" "model1" "model2" "model3" "model4"
## [37] "model5" "model6" "nf" "nobs" "ns" "nt"
## [43] "re" "sdata" "sect" "sectq" "sM" "sPrice"
## [49] "sPriceM" "tab" "tc" "theme_et" "year"
rm(list=ls())
ls()
## character(0)
# 2 + 3
Everything in R is an object
a <- c(1:5)
a
## [1] 1 2 3 4 5
sum(a)
## [1] 15
sum
## function (..., na.rm = FALSE) .Primitive("sum")
b <- plot(a)

b
## NULL
a <- rnorm(100)
b <- a + rnorm(100)
model_1 <- lm(a ~ b)
model_1
##
## Call:
## lm(formula = a ~ b)
##
## Coefficients:
## (Intercept) b
## -0.04477 0.43198
summary(a)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -2.24416 -0.66856 -0.11265 -0.06863 0.52895 2.07241
summary(model_1)
##
## Call:
## lm(formula = a ~ b)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.16598 -0.33605 -0.07182 0.40515 1.57622
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.04477 0.06038 -0.741 0.46
## b 0.43198 0.04238 10.192 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6034 on 98 degrees of freedom
## Multiple R-squared: 0.5145, Adjusted R-squared: 0.5096
## F-statistic: 103.9 on 1 and 98 DF, p-value: < 2.2e-16
plot(a)

plot(a, b)

plot(model_1)



* A function’s output depends on the object!
a <- 5
b <- "a"
c <- TRUE
A <- c(1:5)
B <- c("a", "b", "c")
C <- c(T, F, T)
class(a)
## [1] "numeric"
class(A)
## [1] "integer"
class(b)
## [1] "character"
class(B)
## [1] "character"
class(c)
## [1] "logical"
class(C)
## [1] "logical"
is.numeric(C)
## [1] FALSE
is.logical(C)
## [1] TRUE
as.numeric(C)
## [1] 1 0 1
C + 1
## [1] 2 1 2
rm(list=ls())
a <- c("small", "large", "medium")
a
## [1] "small" "large" "medium"
b <- a[sample(3, 10, replace = TRUE)]
b
## [1] "medium" "large" "large" "small" "medium" "large" "large" "small"
## [9] "medium" "large"
bfactor <- factor(b)
bfactor
## [1] medium large large small medium large large small medium large
## Levels: large medium small
bordered <- ordered(bfactor, levels=c("small", "medium", "large"))
bordered
## [1] medium large large small medium large large small medium large
## Levels: small < medium < large
as.numeric(bfactor)
## [1] 2 1 1 3 2 1 1 3 2 1
bfactor
## [1] medium large large small medium large large small medium large
## Levels: large medium small
as.numeric(bordered)
## [1] 2 3 3 1 2 3 3 1 2 3
bordered
## [1] medium large large small medium large large small medium large
## Levels: small < medium < large
x <- rnorm(10)
y <- x + as.numeric(bordered) + rnorm(10)
summary(lm(y ~ x + bordered))
##
## Call:
## lm(formula = y ~ x + bordered)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.07480 -0.40616 0.06776 0.49311 0.72449
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.9847 0.3347 8.918 0.000111 ***
## x 1.4236 0.3047 4.672 0.003426 **
## bordered.L 1.8942 0.4371 4.334 0.004909 **
## bordered.Q -0.5702 0.4261 -1.338 0.229303
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7286 on 6 degrees of freedom
## Multiple R-squared: 0.8906, Adjusted R-squared: 0.8359
## F-statistic: 16.28 on 3 and 6 DF, p-value: 0.002746
summary(lm(y ~ x + bfactor))
##
## Call:
## lm(formula = y ~ x + bfactor)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.07480 -0.40616 0.06776 0.49311 0.72449
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.0913 0.3622 11.296 2.88e-05 ***
## x 1.4236 0.3047 4.672 0.00343 **
## bfactormedium -0.6411 0.5415 -1.184 0.28128
## bfactorsmall -2.6787 0.6181 -4.334 0.00491 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7286 on 6 degrees of freedom
## Multiple R-squared: 0.8906, Adjusted R-squared: 0.8359
## F-statistic: 16.28 on 3 and 6 DF, p-value: 0.002746
a <- factor(c("3", "11", "2", "23", "313", "2"))
a
## [1] 3 11 2 23 313 2
## Levels: 11 2 23 3 313
a + 1
## [1] NA NA NA NA NA NA
afnumeric <- as.numeric(a)
afnumeric
## [1] 4 1 2 3 5 2
anumeric <- as.numeric(as.character(a))
anumeric
## [1] 3 11 2 23 313 2
rm(list=ls())
date1 <- as.Date("02/28/2016", format = "%m/%d/%Y")
date2 <- as.Date("28 February 10", format = "%d %B %y")
date3 <- as.Date("02/30/2016", format = "%m/%d/%Y")
date1
## [1] "2016-02-28"
date2
## [1] "2010-02-28"
date3
## [1] NA
date1 - date2
## Time difference of 2191 days
weekdays(date2)
## [1] "Sunday"
as.numeric(date2)
## [1] 14668