Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior Próxima revisão Ambos lados da revisão seguinte | ||
03_apostila:04-dados [2020/08/20 16:10] adalardo |
03_apostila:04-dados [2020/09/21 13:15] adalardo [Atributos de um Objeto de Dados] |
||
---|---|---|---|
Linha 295: | Linha 295: | ||
==== Atributos de um Objeto de Dados ==== | ==== Atributos de um Objeto de Dados ==== | ||
- | Todo objeto no R tem dois atributos básicos, que são o tipo de dado que contém((em termos técnicos, trata-se do modo de armazenamento, e.g., apenas números, apenas caracteres, ou uma mistura, que é uma lista)) e o número de elementos que contêm. As funções ''mode'' e ''length'' retornam esses atributos: | + | Todo objeto no R tem dois atributos básicos, que são o tipo de dado((em termos técnicos, trata-se do modo de armazenamento, e.g., apenas números, apenas caracteres, ou uma mistura, que é uma lista)) e o número de elementos que contêm. As funções ''mode'' e ''length'' retornam esses atributos: |
<code rsplus> | <code rsplus> | ||
> pares | > pares | ||
Linha 1032: | Linha 1032: | ||
O sinal de igualdade faz uma comparação entre dois elementos. No R o sinal de igualdade são dois sinais de igual seguidos (**==**). Este operador retorna o resultado do teste lógico //"a igual b?"//, que só pode ter dois valores, ''T'' (verdadeiro), ou ''F'' (falso): | O sinal de igualdade faz uma comparação entre dois elementos. No R o sinal de igualdade são dois sinais de igual seguidos (**==**). Este operador retorna o resultado do teste lógico //"a igual b?"//, que só pode ter dois valores, ''T'' (verdadeiro), ou ''F'' (falso): | ||
- | <code> | + | <code rsplus> |
> a = 2 + 2 | > a = 2 + 2 | ||
> a == 4 | > a == 4 | ||
Linha 1048: | Linha 1048: | ||
Os vetores lógicos ('''logical''') podem participar de operações matemáticas. Nesse caso o valor '''TRUE''' assume o valor 1, e valor '''FALSE''' assume o valor 0: | Os vetores lógicos ('''logical''') podem participar de operações matemáticas. Nesse caso o valor '''TRUE''' assume o valor 1, e valor '''FALSE''' assume o valor 0: | ||
- | <code> | + | <code rsplus> |
> f | > f | ||
[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE | [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE | ||
Linha 1059: | Linha 1059: | ||
</code> | </code> | ||
Para ter frequência de dados que satisfaçam uma certa condição basta somar o vetor lógico resultante: | Para ter frequência de dados que satisfaçam uma certa condição basta somar o vetor lógico resultante: | ||
- | <code> | + | <code rsplus> |
> notas.dos.alunos | > notas.dos.alunos | ||
[1] 6.0 5.1 6.8 2.8 6.1 9.0 4.3 10.4 6.0 7.9 8.9 6.8 9.8 4.6 11.3 | [1] 6.0 5.1 6.8 2.8 6.1 9.0 4.3 10.4 6.0 7.9 8.9 6.8 9.8 4.6 11.3 | ||
Linha 1077: | Linha 1077: | ||
Considere o seguinte vetor: | Considere o seguinte vetor: | ||
- | <code> | + | <code rsplus> |
> cores = c("amarelo","vermelho","azul","laranja") | > cores = c("amarelo","vermelho","azul","laranja") | ||
> | > | ||
</code> | </code> | ||
Para gerar uma amostra, com reposição, dessas cores execute o comando: | Para gerar uma amostra, com reposição, dessas cores execute o comando: | ||
- | <code> | + | <code rsplus> |
> muitas.cores = sample(cores, 20, TRUE) | > muitas.cores = sample(cores, 20, TRUE) | ||
> muitas.cores | > muitas.cores | ||
Linha 1100: | Linha 1100: | ||
Para gerar uma amostra de 1000 números de uma distribuição Normal com média 23 e desvio padrão 5, utilize o comando: | Para gerar uma amostra de 1000 números de uma distribuição Normal com média 23 e desvio padrão 5, utilize o comando: | ||
- | <code> | + | <code rsplus> |
> vnormal = rnorm(1000, 23, 5) | > vnormal = rnorm(1000, 23, 5) | ||
</code> | </code> | ||
Linha 1132: | Linha 1132: | ||
A) **Vetor de números inteiros positivos**: os números se referem às posições desejadas do vetor indexado. | A) **Vetor de números inteiros positivos**: os números se referem às posições desejadas do vetor indexado. | ||
- | <code> | + | <code rsplus> |
> a | > a | ||
[1] 1.0000000 10.0000000 3.4000000 3.1415927 0.7853982 0.3678794 0.8020016 | [1] 1.0000000 10.0000000 3.4000000 3.1415927 0.7853982 0.3678794 0.8020016 | ||
Linha 1147: | Linha 1147: | ||
B) **Vetor de números inteiros negativos**: os números se referem as posições **não** desejadas do vetor indexado. | B) **Vetor de números inteiros negativos**: os números se referem as posições **não** desejadas do vetor indexado. | ||
- | <code> | + | <code rsplus> |
a | a | ||
[1] 1.0000000 10.0000000 3.4000000 3.1415927 0.7853982 0.3678794 0.8020016 | [1] 1.0000000 10.0000000 3.4000000 3.1415927 0.7853982 0.3678794 0.8020016 | ||
Linha 1162: | Linha 1162: | ||
C) **Vetor lógico**: os elementos do vetor lógico correspondentes a '''TRUE''' são selecionados, os elementos correspondentes a '''FALSE''' são excluídos. | C) **Vetor lógico**: os elementos do vetor lógico correspondentes a '''TRUE''' são selecionados, os elementos correspondentes a '''FALSE''' são excluídos. | ||
- | <code> | + | <code rsplus> |
> b | > b | ||
[1] 1 2 3 4 5 6 7 8 | [1] 1 2 3 4 5 6 7 8 | ||
Linha 1179: | Linha 1179: | ||
Na indexação por vetores lógicos, esses vetores devem ter **o mesmo comprimento** do vetor indexado. Caso contrário a operação será defeituosa: | Na indexação por vetores lógicos, esses vetores devem ter **o mesmo comprimento** do vetor indexado. Caso contrário a operação será defeituosa: | ||
- | <code> | + | <code rsplus> |
> b | > b | ||
[1] 1 2 3 4 5 6 7 8 | [1] 1 2 3 4 5 6 7 8 | ||
Linha 1190: | Linha 1190: | ||
As operações por vetores lógicos podem combinar vários critérios, por meio dos operadores "E", "OU" e "NÃO": | As operações por vetores lógicos podem combinar vários critérios, por meio dos operadores "E", "OU" e "NÃO": | ||
- | <code> | + | <code rsplus> |
<WRAP center round box 60%> | <WRAP center round box 60%> | ||
Por questão de segurança do wiki contra spam algumas palavras são proibidas. Nos exemplos a seguir a palavra "estupro" em inglês foi substituida por "Abuso", por esse motivo para rodar as linhas de código deve retornar a palavra para o idioma inglesa. | Por questão de segurança do wiki contra spam algumas palavras são proibidas. Nos exemplos a seguir a palavra "estupro" em inglês foi substituida por "Abuso", por esse motivo para rodar as linhas de código deve retornar a palavra para o idioma inglesa. | ||
Linha 1215: | Linha 1215: | ||
D) **Vetor caracter**: nesse caso o vetor deve ser //nomeado// (função '''names''') por um vetor '''character''': | D) **Vetor caracter**: nesse caso o vetor deve ser //nomeado// (função '''names''') por um vetor '''character''': | ||
- | <code> | + | <code rsplus> |
> zoo = c(4, 10, 2, 45) | > zoo = c(4, 10, 2, 45) | ||
> names(zoo) = c("onça", "anta", "tatu", "guará") | > names(zoo) = c("onça", "anta", "tatu", "guará") | ||
Linha 1230: | Linha 1230: | ||
==== Indexação de Fatores ==== | ==== Indexação de Fatores ==== | ||
A indexação de um fator pode resultar em níveis não usados. Caso você queira exluir esses níveis, use o argumento ''drop'', do operador ''[]'': | A indexação de um fator pode resultar em níveis não usados. Caso você queira exluir esses níveis, use o argumento ''drop'', do operador ''[]'': | ||
- | <code> | + | <code rsplus> |
> tratamentos | > tratamentos | ||
[1] Controle Controle Controle Controle Adubo A Adubo A Adubo A Adubo A | [1] Controle Controle Controle Controle Adubo A Adubo A Adubo A Adubo A | ||
Linha 1257: | Linha 1257: | ||
O modo de indexação de matrizes é ''[linhas,colunas]'': | O modo de indexação de matrizes é ''[linhas,colunas]'': | ||
- | <code> | + | <code rsplus> |
> matriz | > matriz | ||
[,1] [,2] [,3] [,4] | [,1] [,2] [,3] [,4] | ||
Linha 1275: | Linha 1275: | ||
A mesma notação é válida para //data frames//: | A mesma notação é válida para //data frames//: | ||
- | <code> | + | <code rsplus> |
> USArrests[1:5,c(2,4)] | > USArrests[1:5,c(2,4)] | ||
Assault abuso | Assault abuso | ||
Linha 1304: | Linha 1304: | ||
Para incluir todas as linhas ou colunas, omita o valor (mas mantenha a vírgula!): | Para incluir todas as linhas ou colunas, omita o valor (mas mantenha a vírgula!): | ||
- | <code> | + | <code rsplus> |
> matriz[,1] | > matriz[,1] | ||
[1] 1 2 3 | [1] 1 2 3 | ||
Linha 1333: | Linha 1333: | ||
A notação é estendida para um //array// de qualquer dimensão, como o objeto ''Titanic'', que tem quatro dimensões: | A notação é estendida para um //array// de qualquer dimensão, como o objeto ''Titanic'', que tem quatro dimensões: | ||
- | <code> | + | <code rsplus> |
> dimnames(Titanic) | > dimnames(Titanic) | ||
$Class | $Class | ||
Linha 1374: | Linha 1374: | ||
Combinando as operações de indexação e de atribuição é possível alterar os valores de qualquer parte de um objeto: | Combinando as operações de indexação e de atribuição é possível alterar os valores de qualquer parte de um objeto: | ||
- | <code> | + | <code rsplus> |
> zoo | > zoo | ||
onça anta tatu guará | onça anta tatu guará | ||
Linha 1411: | Linha 1411: | ||
Com a indexação é possível mudar a ordem de um vetor: | Com a indexação é possível mudar a ordem de um vetor: | ||
- | <code> | + | <code rsplus> |
> zoo | > zoo | ||
onça anta tatu lobo-guará | onça anta tatu lobo-guará | ||
Linha 1427: | Linha 1427: | ||
A função ''order'' retorna os **índices** dos elementos de um vetor: | A função ''order'' retorna os **índices** dos elementos de um vetor: | ||
- | <code> | + | <code rsplus> |
##Vetor de nomes do vetor zoo: | ##Vetor de nomes do vetor zoo: | ||
> names(zoo) | > names(zoo) | ||
Linha 1438: | Linha 1438: | ||
E com isso podemos usar seu resultado para ordenar um vetor em função de quaisquer outros: | E com isso podemos usar seu resultado para ordenar um vetor em função de quaisquer outros: | ||
- | <code> | + | <code rsplus> |
> zoo[order(names(zoo))] | > zoo[order(names(zoo))] | ||
anta lobo-guará onça tatu | anta lobo-guará onça tatu | ||
Linha 1446: | Linha 1446: | ||
O argumento da função comporta múltiplos vetores de critério. Em caso de empate pelo(s) primeiro(s) critério(s), os seguintes são usados: | O argumento da função comporta múltiplos vetores de critério. Em caso de empate pelo(s) primeiro(s) critério(s), os seguintes são usados: | ||
- | <code> | + | <code rsplus> |
> cidades | > cidades | ||
regiao estado pop.2007 | regiao estado pop.2007 | ||
Linha 1498: | Linha 1498: | ||
<box 100% left | //**Exercício 4.13.** Comando Curto, Resultado nem Tanto//> | <box 100% left | //**Exercício 4.13.** Comando Curto, Resultado nem Tanto//> | ||
Verifique o resultado do comando: | Verifique o resultado do comando: | ||
- | <code> | + | <code rsplus> |
> ?"[" | > ?"[" | ||
</code> | </code> | ||
Linha 1505: | Linha 1505: | ||
<box 100% left | //**Exercício 4.14** Indexação de Listas//> | <box 100% left | //**Exercício 4.14** Indexação de Listas//> | ||
Crie uma lista com o comando: | Crie uma lista com o comando: | ||
- | <code> | + | <code rsplus> |
minha.lista <- list(um.vetor=1:5, uma.matriz=matrix(1:6,2,3), | minha.lista <- list(um.vetor=1:5, uma.matriz=matrix(1:6,2,3), | ||
um.dframe=data.frame(seculo=c("XIX","XX","XXI"), | um.dframe=data.frame(seculo=c("XIX","XX","XXI"), | ||
Linha 1511: | Linha 1511: | ||
</code> | </code> | ||
Qual a diferença entre os subconjuntos obtidos com os três comandos a seguir: | Qual a diferença entre os subconjuntos obtidos com os três comandos a seguir: | ||
- | <code> | + | <code rsplus> |
minha.lista[1] | minha.lista[1] | ||
minha.lista[[1]] | minha.lista[[1]] | ||
Linha 1520: | Linha 1520: | ||
Para gerar uma amostra de 10.000 números de uma distribuição Normal com média 30 e desvio padrão 7, utilize o comando: | Para gerar uma amostra de 10.000 números de uma distribuição Normal com média 30 e desvio padrão 7, utilize o comando: | ||
- | <code> | + | <code rsplus> |
> vnormal = rnorm(10000, 30, 7) | > vnormal = rnorm(10000, 30, 7) | ||
</code> | </code> |