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