Aula 14 – Curso de R – Criando objetos

Aula 14 – Curso de R – Criando objetos

Manipulando objetos

Criando objetos no R

Página principal do blog

Todas as aulas desse curso

Aula 13                         Aula 15

Antes, quero deixar meus links de afiliados pra vocês:

Hostinger

One.com

DigitalOcean

Se cadastrando, vocês poderão conhecer, usar e testar gratuitamente alguns recursos dos serviços oferecidos por eles.

Por favor, se gostarem do conteúdo dêem um joinha 👍, curtam e compartilhem a página do Código Fluente no Facebook.

Pinterest:
https://br.pinterest.com/codigofluente/

Endereço para baixar os arquivos e o script:

https://github.com/toticavalcanti/curso_r

Manipulando objetos

Criando objetos

É possível criar um objeto e especificar seu modo, tamanho, tipo, etc.

Essa abordagem é interessante na perspectiva de manipulação de objetos.

Pode-se, por exemplo, criar um objeto vazio e depois modificar seu elementos, o que é mais eficiente do que colocar todos os seus elementos com c().

Também pode ser muito conveniente criar objetos a partir de outros.

Por exemplo, se alguém quiser uma série de modelos, é simples colocar as fórmulas em uma lista e extrair os elementos sucessivamente para inseri-los na função lm().

A construção explícita de objetos fornece uma melhor compreensão de sua estrutura.

Vector

A função Vector, possui dois argumentos modo e tamanho, ela cria um vetor cujos elementos têm um valor, dependendo do modo especificado como argumento: 0 se numérico, FALSE se lógico ou “” se caractere.

As seguintes funções têm exatamente o mesmo efeito e, para um único argumento, o tamanho do vetor:  numeric(), logical(), e character().


vector(mode = "logical", length = 4) 
[1] FALSE FALSE FALSE FALSE 
character(5) 
[1] "" "" "" "" "" 
logical(4) 
[1] FALSE FALSE FALSE FALSE 
numeric(4) 
[1] 0 0 0 0

Factor

Um Factor inclui não apenas os valores correspondente de uma variável categórica, mas também, os diferentes níveis possíveis dessa variável (mesmo que não estejam presentes nos dados).

A função Factor tem as seguintes opções:

factor(x, levels = sort(unique(x), na.last = TRUE), labels = levels, exclude = NA, ordered = is.ordered(x))

O x é um vetor de dados, geralmente usando um pequeno número de valores distintos, levels especifica os níveis possíveis do fator, um vetor opcional dos valores exclusivos (como cadeias de caracteres) que x pode ter recebido.

Os labels definem os nomes dos níveis, exclude exclui os valores de x a serem retirados dos levels e ordered é um argumento lógico que especifica se os níveis do fator são ordenados.


status <- c("Lo", "Hi", "Med", "Med", "Hi") 
ordered.status <- factor(status, levels=c("Lo", "Med", "Hi"), ordered=TRUE)
ordered.status
[1] Lo  Hi  Med Med Hi 
Levels: Lo < Med < Hi

Lembre-se de que x é do modo numérico ou caractere.

Mais exemplos de factor:


factor(1:3)
[1] 1 2 3
Levels: 1 2 3
#o 1:5 é a criação de um vetor de entrada [1, 2, 3, 4, 5]
factor(1:5, levels=1:3)
[1] 1    2    3    <NA> <NA>
Levels: 1 2 3
factor(1:3, labels=c("A", "B", "C"))
[1] A B C
Levels: A B C
factor(1:5, exclude=4)
[1] 1 2 3 NA 5
Levels: 1 2 3 5
#cria um vetor como entrada e atribui a data
data <- c("East","West","East","North","North","East","West","West","West","East","South")
factor_data <- factor(data)
[1] East  West  East  North North East  West  West  West  East  South
Levels: East North South West

A função levels extrai os níveis possíveis de um fator:


categories <- factor(c(2, 4), levels=2:5)
categories 
[1] 2 4
Levels: 2 3 4 5
levels(categories )
[1] "2" "3" "4" "5"

Matrix

Uma matriz é na verdade um vetor com um atributo adicional (dim) que é um vetor numérico com comprimento 2 e define os números de linhas e colunas da matriz.

Uma matriz pode ser criada com a função matrix().

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

A opção byrow indica se os valores fornecidos pelos dados devem preencher as colunas sucessivamente (o padrão) ou as linhas (se TRUE).

A opção dimnames permite dar nomes às linhas e colunas.


matrix(data=5, nr=2, nc=2)
     [,1] [,2]
[1,]    5    5
[2,]    5    5

matrix(1:6, 2, 3)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

matrix(1:6, 2, 3, byrow=TRUE)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

# Define os nomes das colunas e das linhas.
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")
p <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
p
     col1 col2 col3
row1    3    4    5
row2    6    7    8
row3    9   10   11
row4   12   13   14

Outra maneira de criar uma matriz é fornecer os valores apropriados para o atributo dim (que é inicialmente NULL):


x <- 1:15
x
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

dim(x)
NULL

dim(x) <- c(5, 3)
x
     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15

Data frame

Vimos que um Data frame é criado implicitamente pelo função read.table, também é possível criar um Data frame com o função data.frame.

Os vetores incluídos no Data frame devem ter o mesmo tamanho.

Veja alguns exemplos:


x <- 1:4; n <- 10; M <- c(10, 35); y <- 2:4
data.frame(x, n)
  x  n
1 1 10
2 2 10
3 3 10
4 4 10

data.frame(x, M)
  x  M
1 1 10
2 2 35
3 3 10
4 4 35

x
[1] 1 2 3 4
n
[1] 10
data.frame(x, y)
Error in data.frame(x, y) : 
  arguments imply differing number of rows: 4, 3

Se um fator for incluído em um Data frame, ele deverá ter o mesmo comprimento que o(s) vetor(es).

É possível alterar os nomes das colunas com, por exemplo, data.frame (A1 = x, A2 = n).


data.frame (x, n)
  x  n
1 1 10
2 2 10
3 3 10
4 4 10

df <- data.frame (A1 = x, A2 = n)
df
  A1 A2
1  1 10
2  2 10
3  3 10
4  4 10

Também é possível atribuir nomes às linhas com a opção row.names, que devem ser, é claro, um vetor de caractere de modo e comprimento igual ao número de linhas do Data frame.


df <- data.frame (A1 = x, A2 = n, row.names = c("line 01", "line 02", "line 03", "line 04"))
df
        A1 A2
line 01  1 10
line 02  2 10
line 03  3 10
line 04  4 10

 

Por fim, observe que os Data frame tem um atributo dim semelhante às matrizes.


dim(df)
[1] 4 2

List

Um List é criado de maneira semelhante aos Data frames com a função list().

Não há restrições quanto aos objetos que podem ser incluídos.

Diferente do data.frame(), os nomes dos objetos não são usados por padrão, vamos utilizar os vetores x(1, 2, 3, 4) e y(2, 3, 4) do exemplo anterior:


L1 <- list(x, y); L2 <- list(A=x, B=y)
L1
[[1]]
[1] 1 2 3 4
[[2]]
[1] 2 3 4
L2
$A
[1] 1 2 3 4
$B
[1] 2 3 4

Time-series

A função ts() cria um objeto da classe “ts” a partir de um vetor (série temporal única) ou uma matriz (série temporal multivariada) e algumas opções que caracterizam a série.

As opções, com os valores padrão, são:

ts(data = NA, start = 1, end = numeric(0), frequency = 1, deltat = 1, ts.eps = getOption(“ts.eps”), class, names)

  • data – um vetor ou uma matriz.
  • start – o tempo inicial da primeira observação, um número ou um vetor de dois números inteiros (veja os exemplos abaixo).
  • end – o tempo da última observação especificada da mesma maneira do start.
  • frequency –  o número de observações por unidade de tempo.
  • deltat – a fração do período de amostragem entre sucessivas observações (ex. 1/12 para dados mensais), apenas um  frequency ou deltat deve ser dado.
  • ts.eps – tolerância para a comparação de séries. As frequências são consideradas iguais se a diferença for menor que ts.eps.
  • class – classe para dar ao objeto, o padrão é “ts” para série única e c(“mts”, “ts”) para uma série multivariada.
  • names – um vetor modo caracter, com os nomes das séries individuais e no caso de série multivariada, por padrão os nomes das colunas de dados, ou Série 1, Série 2, …

Alguns exemplos de séries temporais criadas com ts():


ts(1:10, start = 1959)
Time Series:
Start = 1959 
End = 1968 
Frequency = 1 
 [1]  1  2  3  4  5  6  7  8  9 10

ts(1:47, frequency = 12, start = c(1959, 2))
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1959       1   2   3   4   5   6   7   8   9  10  11
1960  12  13  14  15  16  17  18  19  20  21  22  23
1961  24  25  26  27  28  29  30  31  32  33  34  35
1962  36  37  38  39  40  41  42  43  44  45  46  47

my.ts <- ts(1:12, start=c(2009, 1), end=c(2019, 12), frequency=12)
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2009   1   2   3   4   5   6   7   8   9  10  11  12
2010   1   2   3   4   5   6   7   8   9  10  11  12
2011   1   2   3   4   5   6   7   8   9  10  11  12
2012   1   2   3   4   5   6   7   8   9  10  11  12
2013   1   2   3   4   5   6   7   8   9  10  11  12
2014   1   2   3   4   5   6   7   8   9  10  11  12
2015   1   2   3   4   5   6   7   8   9  10  11  12
2016   1   2   3   4   5   6   7   8   9  10  11  12
2017   1   2   3   4   5   6   7   8   9  10  11  12
2018   1   2   3   4   5   6   7   8   9  10  11  12
2019   1   2   3   4   5   6   7   8   9  10  11  12

Os valores de 4 e 12 em frequency são usados, por exemplo, para métodos de impressão de séries trimestral e mensal, respectivamente.

Então, usar frequency = 12 implica uma série mensal.

No start = 1959 é o ano e o 2 é o mês (February), o ponto inicial.


ts(1:10, frequency = 4, start = c(1959, 2))
     Qtr1 Qtr2 Qtr3 Qtr4
1959         1    2    3
1960    4    5    6    7
1961    8    9   10 

Expression

Os objetos do modo Expression têm um papel fundamental em R.

Uma Expression é uma série de caracteres que faz sentido no R.

Todos os comandos válido são expressões.

Quando um comando é digitado no teclado, ele é avaliado pelo interpretador do R e executado se for válido.

Em muitas circunstâncias, é útil construir uma expressão sem avaliar ela, é para isso que a Expression é feita.

É possível avaliar a expressão posteriormente com eval().


 # Cria expressão de exemplo
x1 <- expression(3 * 5)
x1
expression(3 * 5)
eval(x1)
[1] 15
x <- 3; y <- 2.5; z <- 1
exp1 <- expression(x / (y + exp(z)))
exp1
expression(x/(y + exp(z)))
eval(exp1)
[1] 0.5749019

Expressões podem ser usadas, entre outras coisas, para incluir equações em gráficos.

Uma expressão pode ser criada a partir de uma variável de modo character.

Algumas funções tomam expressões como argumentos, por exemplo D que retorna derivadas parciais:


D(exp1, "x")
1/(y + exp(z))
D(exp1, "y")
-(x/(y + exp(z))^2)
D(exp1, "z")
-(x * exp(z)/(y + exp(z))^2)

Valeu, ficamos por aqui. 😉

Página principal do blog

Todas as aulas desse curso

Aula 13                         Aula 15

Por favor, se gostarem do conteúdo dêem um joinha 👍, curtam e compartilhem a página do Código Fluente no Facebook.

Pinterest:
https://br.pinterest.com/codigofluente/

Endereço para baixar os arquivos e o script:

https://github.com/toticavalcanti/curso_r

Meus links de afiliados:

Hostinger

One.com

DigitalOcean

Obrigado e bons estudos. 😉

 

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>