Vamos aprender um pouco sobre o R

algumas operações básicas

3+5
[1] 8
3*5
[1] 15
3/5
[1] 0.6
3^5
[1] 243
3**5
[1] 243
a=3+5
a
[1] 8
b=3*5
b
[1] 15
a+b
[1] 23
(3+5)+(3*5)
[1] 23
3+5+3*5
[1] 23
1:10
 [1]  1  2  3  4  5  6  7  8  9 10
1:10^2
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24
 [25]  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48
 [49]  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
 [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96
 [97]  97  98  99 100

instalando um pacote pela linha de comando

# isso é um comentário!  Use o símobolo #
# instalando o pacote psych.  
#  install.packages("psych")
# para carregar e usar o pacote  
library(psych) 
# para acessar as funcionalidades do pacote
?psych

Armazenando dados

# constante
v1 <- 3
v1
[1] 3
# vetor
v2 <- c(1,2,3)
v2
[1] 1 2 3
v3 <- c(4,5,6)
v3
[1] 4 5 6
v4 <- c(7,8,9)
v4
[1] 7 8 9
# matriz
mat1 <- matrix(c(v2,v3,v4), nrow = 3, ncol = 3)
mat1
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
mat2 <- matrix(data=c(1,2,3,4,5,6,7,8,9),nrow = 3, ncol = 3)
mat2
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
t(mat1)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
mat1==mat2
     [,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE
# dataframe
data1 <- data.frame(v2,v3,v4)
data1
row.names(data1) <- c("joão", "josé", "maria")
data1
# data2 <- edit(data1)
str(data2)
'data.frame':   3 obs. of  3 variables:
 $ v2: num  1 2 3
 $ v3: num  4 5 6
 $ v4: num  7 8 9
data3 <- data.frame(row.names = c("joão", "josé", "maria"), v2,v3,v4)
data3
# acessando a variável de um dataframe.
data3$v2
[1] 1 2 3
data3$v3
[1] 4 5 6
data3$v3
[1] 4 5 6
# acessando subconjuntos [linhas , colunas]
data3[1:3,1:3]
data3[,1:3]
data3[1:3,]
data3[,]
# linhas 1 e 2 com coluna 1
data3[c(1,2),1]
[1] 1 2
# linhas 2 e 3 com colunas 1 e 2
data3[c(2,3),c(1,2)]
data3[2:3,1:2]

alguns gráficos

# vamos gerar 1000 valores com distribuição normal padrão
x1 <- rnorm(1000)
# vamos gerar 1000 valores com distribuição de poison
x2 <- rpois(1000,3)
# vamos gerar 1000 valores com distribuição de poison
x3 <- rexp(1000,3)
hist(x1)

boxplot(x1, horizontal = T)

# vamos colocar todos juntos
par(mfrow=c(2,3))  # duas linhas e 3 colunas
hist(x1)
hist(x2)
hist(x3)
boxplot(x1, horizontal = T)
boxplot(x2, horizontal = T)
boxplot(x3, horizontal = T)
par(mfrow=c(1,1))

Estatísticas descritivas e funções comuns

sum(x1)
[1] -0.8619795
prod(x1)
[1] 6.402429e-269
mean(x1)
[1] -0.0008619795
sd(x1)
[1] 0.9991667
var(x1)
[1] 0.9983341
min(x1)
[1] -2.92059
median(x1)
[1] 0.02619436
max(x1)
[1] 2.872568
range(x1)
[1] -2.920590  2.872568
summary(x1)
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
-2.921000 -0.648800  0.026190 -0.000862  0.671900  2.873000 
# usando o pacote psych já carregado anteriormente
describe(x1)
   vars    n mean sd median trimmed  mad   min  max range  skew kurtosis   se
X1    1 1000    0  1   0.03       0 0.98 -2.92 2.87  5.79 -0.03    -0.05 0.03
describe(x2)
   vars    n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 1000 2.89 1.79      3    2.77 1.48   0  10    10 0.58     0.05 0.06
describe(x3)
   vars    n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 1000 0.33 0.32   0.24    0.28 0.25   0 2.43  2.43 2.15     7.21 0.01
normal <- x1
poison <- x2
exponencial <- x3
dados <- data.frame(normal,poison,exponencial)
describe(dados)
            vars    n mean   sd median trimmed  mad   min   max range  skew kurtosis   se
normal         1 1000 0.00 1.00   0.03    0.00 0.98 -2.92  2.87  5.79 -0.03    -0.05 0.03
poison         2 1000 2.89 1.79   3.00    2.77 1.48  0.00 10.00 10.00  0.58     0.05 0.06
exponencial    3 1000 0.33 0.32   0.24    0.28 0.25  0.00  2.43  2.43  2.15     7.21 0.01

Operadores

#### Boolean
# & and, | or, ! not
a <- seq(0, 100, by = 10)
a
 [1]   0  10  20  30  40  50  60  70  80  90 100
a[(a >= 50) & (a <= 90)]
[1] 50 60 70 80 90
a[(a < 50) | (a > 100)]
[1]  0 10 20 30 40
a[(a < 50) | !(a > 100)]
 [1]   0  10  20  30  40  50  60  70  80  90 100
a[(a >= 50) & !(a <= 90)]
[1] 100

valores ausentes (NA)

#### Missing values
mean(c(NA, 1, 2))
[1] NA
# Many functions have an na.rm argument  (NA remove)
mean(c(NA, 1, 2), na.rm = TRUE)
[1] 1.5
sum(c(NA, 1, 2))
[1] NA
sum(c(NA, 1, 2), na.rm = TRUE)
[1] 3
LS0tDQp0aXRsZTogIkPDk0RJR09TIMOaVEVJUyBOTyBSIC0gSW50cm9kdcOnw6NvIg0KYXV0aG9yOiAiTGVvbmksIFIuIEMuIFByb2Zlc3NvciBEci4iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KKioqDQogDQojIyMgVmFtb3MgYXByZW5kZXIgdW0gcG91Y28gc29icmUgbyBSDQoNCj4gYWxndW1hcyBvcGVyYcOnw7VlcyBiw6FzaWNhcw0KDQpgYGB7cn0NCjMrNQ0KMyo1DQozLzUNCjNeNQ0KMyoqNQ0KYT0zKzUNCmENCmI9Myo1DQpiDQphK2INCigzKzUpKygzKjUpDQozKzUrMyo1DQoxOjEwDQoxOjEwXjINCmBgYA0KDQo+IGluc3RhbGFuZG8gdW0gcGFjb3RlIHBlbGEgbGluaGEgZGUgY29tYW5kbw0KDQpgYGB7cn0NCiMgaXNzbyDDqSB1bSBjb21lbnTDoXJpbyEgIFVzZSBvIHPDrW1vYm9sbyAjDQoNCiMgaW5zdGFsYW5kbyBvIHBhY290ZSBwc3ljaC4gIA0KDQojICBpbnN0YWxsLnBhY2thZ2VzKCJwc3ljaCIpDQoNCiMgcGFyYSBjYXJyZWdhciBlIHVzYXIgbyBwYWNvdGUgIA0KbGlicmFyeShwc3ljaCkgDQoNCiMgcGFyYSBhY2Vzc2FyIGFzIGZ1bmNpb25hbGlkYWRlcyBkbyBwYWNvdGUNCj9wc3ljaA0KYGBgDQoNCj4gQXJtYXplbmFuZG8gZGFkb3MNCg0KYGBge3J9DQojIGNvbnN0YW50ZQ0KdjEgPC0gMw0KdjENCiMgdmV0b3INCnYyIDwtIGMoMSwyLDMpDQp2Mg0KdjMgPC0gYyg0LDUsNikNCnYzDQp2NCA8LSBjKDcsOCw5KQ0KdjQNCiMgbWF0cml6DQptYXQxIDwtIG1hdHJpeChjKHYyLHYzLHY0KSwgbnJvdyA9IDMsIG5jb2wgPSAzKQ0KbWF0MQ0KbWF0MiA8LSBtYXRyaXgoZGF0YT1jKDEsMiwzLDQsNSw2LDcsOCw5KSxucm93ID0gMywgbmNvbCA9IDMpDQptYXQyDQp0KG1hdDEpDQptYXQxPT1tYXQyDQojIGRhdGFmcmFtZQ0KDQpkYXRhMSA8LSBkYXRhLmZyYW1lKHYyLHYzLHY0KQ0KZGF0YTENCnJvdy5uYW1lcyhkYXRhMSkgPC0gYygiam/Do28iLCAiam9zw6kiLCAibWFyaWEiKQ0KZGF0YTENCiMgZGF0YTIgPC0gZWRpdChkYXRhMSkNCnN0cihkYXRhMikNCmRhdGEzIDwtIGRhdGEuZnJhbWUocm93Lm5hbWVzID0gYygiam/Do28iLCAiam9zw6kiLCAibWFyaWEiKSwgdjIsdjMsdjQpDQpkYXRhMw0KDQojIGFjZXNzYW5kbyBhIHZhcmnDoXZlbCBkZSB1bSBkYXRhZnJhbWUuDQpkYXRhMyR2Mg0KZGF0YTMkdjMNCmRhdGEzJHYzDQoNCiMgYWNlc3NhbmRvIHN1YmNvbmp1bnRvcyBbbGluaGFzICwgY29sdW5hc10NCmRhdGEzWzE6MywxOjNdDQpkYXRhM1ssMTozXQ0KZGF0YTNbMTozLF0NCmRhdGEzWyxdDQoNCiMgbGluaGFzIDEgZSAyIGNvbSBjb2x1bmEgMQ0KZGF0YTNbYygxLDIpLDFdDQoNCiMgbGluaGFzIDIgZSAzIGNvbSBjb2x1bmFzIDEgZSAyDQpkYXRhM1tjKDIsMyksYygxLDIpXQ0KZGF0YTNbMjozLDE6Ml0NCmBgYA0KDQo+IGFsZ3VucyBncsOhZmljb3MNCg0KYGBge3J9DQojIHZhbW9zIGdlcmFyIDEwMDAgdmFsb3JlcyBjb20gZGlzdHJpYnVpw6fDo28gbm9ybWFsIHBhZHLDo28NCngxIDwtIHJub3JtKDEwMDApDQoNCiMgdmFtb3MgZ2VyYXIgMTAwMCB2YWxvcmVzIGNvbSBkaXN0cmlidWnDp8OjbyBkZSBwb2lzb24NCngyIDwtIHJwb2lzKDEwMDAsMykNCg0KIyB2YW1vcyBnZXJhciAxMDAwIHZhbG9yZXMgY29tIGRpc3RyaWJ1acOnw6NvIGRlIHBvaXNvbg0KeDMgPC0gcmV4cCgxMDAwLDMpDQoNCmhpc3QoeDEpDQpib3hwbG90KHgxLCBob3Jpem9udGFsID0gVCkNCg0KYGBgDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0NCg0KIyB2YW1vcyBjb2xvY2FyIHRvZG9zIGp1bnRvcw0KcGFyKG1mcm93PWMoMiwzKSkgICMgZHVhcyBsaW5oYXMgZSAzIGNvbHVuYXMNCg0KaGlzdCh4MSkNCmhpc3QoeDIpDQpoaXN0KHgzKQ0KYm94cGxvdCh4MSwgaG9yaXpvbnRhbCA9IFQpDQpib3hwbG90KHgyLCBob3Jpem9udGFsID0gVCkNCmJveHBsb3QoeDMsIGhvcml6b250YWwgPSBUKQ0KDQpwYXIobWZyb3c9YygxLDEpKQ0KYGBgDQoNCg0KPiBFc3RhdMOtc3RpY2FzIGRlc2NyaXRpdmFzIGUgZnVuw6fDtWVzIGNvbXVucw0KDQpgYGB7cn0NCnN1bSh4MSkNCnByb2QoeDEpDQptZWFuKHgxKQ0Kc2QoeDEpDQp2YXIoeDEpDQptaW4oeDEpDQptZWRpYW4oeDEpDQptYXgoeDEpDQpyYW5nZSh4MSkNCnN1bW1hcnkoeDEpDQoNCg0KIyB1c2FuZG8gbyBwYWNvdGUgcHN5Y2ggasOhIGNhcnJlZ2FkbyBhbnRlcmlvcm1lbnRlDQoNCmRlc2NyaWJlKHgxKQ0KZGVzY3JpYmUoeDIpDQpkZXNjcmliZSh4MykNCg0Kbm9ybWFsIDwtIHgxDQpwb2lzb24gPC0geDINCmV4cG9uZW5jaWFsIDwtIHgzDQoNCmRhZG9zIDwtIGRhdGEuZnJhbWUobm9ybWFsLHBvaXNvbixleHBvbmVuY2lhbCkNCmRlc2NyaWJlKGRhZG9zKQ0KDQoNCmBgYA0KDQo+IE9wZXJhZG9yZXMgDQoNCmBgYHtyfQ0KIyMjIyBCb29sZWFuDQojICYgYW5kLCB8IG9yLCAhIG5vdA0KYSA8LSBzZXEoMCwgMTAwLCBieSA9IDEwKQ0KYQ0KYVsoYSA+PSA1MCkgJiAoYSA8PSA5MCldDQphWyhhIDwgNTApIHwgKGEgPiAxMDApXQ0KYVsoYSA8IDUwKSB8ICEoYSA+IDEwMCldDQphWyhhID49IDUwKSAmICEoYSA8PSA5MCldDQpgYGANCg0KPiB2YWxvcmVzIGF1c2VudGVzIChOQSkNCg0KYGBge3J9DQojIyMjIE1pc3NpbmcgdmFsdWVzDQptZWFuKGMoTkEsIDEsIDIpKQ0KIyBNYW55IGZ1bmN0aW9ucyBoYXZlIGFuIG5hLnJtIGFyZ3VtZW50ICAoTkEgcmVtb3ZlKQ0KbWVhbihjKE5BLCAxLCAyKSwgbmEucm0gPSBUUlVFKQ0Kc3VtKGMoTkEsIDEsIDIpKQ0Kc3VtKGMoTkEsIDEsIDIpLCBuYS5ybSA9IFRSVUUpDQpgYGANCg0K