Isso pode ser feito de maneira muito mais simples com a função vetorizada ifelse.
x =c(23, 0, 5, 0, 12)pres_aus =ifelse(x >0, 1, 0)pres_aus
[1] 1 0 1 0 1
Uma função vetorizada avalia todas as posições de um vetor lógico de uma só vez e devolve um vetor do mesmo comprimento, escolhendo elemento a elemento entre os valores de Verdadeiro ou falso.
Funções vetorizadas
Outro exemplo:
x =c(-2, 0, 3, 0) ifelse(x ==0, "sim", "não")
[1] "não" "sim" "não" "sim"
ifelse(x == 0, "sim", "não")
deve ser lido como: para cada valor do vetor x, se for igual a zero substitui por “sim”, caso contrário, por “não”.
Exercício. Funções vetorizadas
Baixe a planilha Plan1.xlsx da página da disciplina.
Abra o arquivo e armazene no dataframe chamado de dat.
Crie um novo dataframe para o registro de presença-ausência das três espécies usando ifelse.
Rever aggregate() da aula passada
Breve aula sobre SQL
SQL = Structured Query Language
Nasceu na IBM, em 1970.
A ideia é guardar informações em tabelas (linhas e colunas) e depois relacioná-las através de uma linguagem parecida com o inglês.
SQL virou padrão universal como linguagem de banco de dados.
Breve aula sobre SQL
SQL é capaz de fazer tudo com banco de dados
Criar estruturas de dados: criar, alterar e apagar bancos, tabelas, índices.
Consultar dados: o clássico SELECT … FROM … WHERE ….
Inserir, atualizar e excluir dados (INSERT, UPDATE, DELETE).
Criar relatórios e análises: agregações (SUM, AVG, COUNT), agrupamentos (GROUP BY), filtros, junções entre tabelas (JOIN).
Breve aula sobre SQL
Vamos começar criando um dataframe rudimentar chamado tab.
col1 col2 col3
1 A 0 2.009432
2 A 3 8.910816
3 A 3 8.738605
4 A 1 7.486979
5 B 0 9.574144
6 B 0 11.712059
7 B 0 6.889122
8 B 2 4.824471
Breve aula sobre SQL
A função sqldf() cria um novo dataframe baseado na seleção feita pela linguagem SQL, que é muito simples.
Exemplos:
library(sqldf)# Seleciona todas as colunas (*) e todas as linhassqldf('SELECT * FROM tab')
col1 col2 col3
1 A 0 2.009432
2 A 3 8.910816
3 A 3 8.738605
4 A 1 7.486979
5 B 0 9.574144
6 B 0 11.712059
7 B 0 6.889122
8 B 2 4.824471
Breve aula sobre SQL
# Seleciona apenas a primeira colunas e todas as linhassqldf('SELECT col1 FROM tab')
col1
1 A
2 A
3 A
4 A
5 B
6 B
7 B
8 B
# Seleciona as duas primeira colunas e todas as linhassqldf('SELECT col1,col2 FROM tab')
col1 col2
1 A 0
2 A 3
3 A 3
4 A 1
5 B 0
6 B 0
7 B 0
8 B 2
Breve aula sobre SQL
# Filtro para as linhas (usando where)sqldf('SELECT * FROM tab WHERE col1="A" ')
col1 col2 col3
1 A 0 2.009432
2 A 3 8.910816
3 A 3 8.738605
4 A 1 7.486979
# Filtro para as linhas com operador booleano (and / or)sqldf('SELECT * FROM tab WHERE col1="A" and col2=3')
col1 col2 col3
1 A 3 8.910816
2 A 3 8.738605
sqldf('SELECT * FROM tab WHERE col1="A" or col2=3')
col1 col2 col3
1 A 0 2.009432
2 A 3 8.910816
3 A 3 8.738605
4 A 1 7.486979
Breve aula sobre SQL
# Cálculos de médias (avg), soma (sum), contagem (count) etc.sqldf('SELECT AVG(col3) FROM tab')
AVG(col3)
1 7.518203
# Cálculos por grupos (usando group by)sqldf('SELECT AVG(col3) FROM tab GROUP BY col1')
AVG(col3)
1 6.786458
2 8.249949
# Adicionando col1sqldf('SELECT col1, AVG(col3) FROM tab GROUP BY col1')
col1 AVG(col3)
1 A 6.786458
2 B 8.249949
Resumo das sentenças SQL desta aula
SELECT * FROM tab
SELECT col1 FROM tab
SELECT col1,col2 FROM tab
SELECT * FROM tab WHERE col1=“A”
SELECT * FROM tab WHERE col1=“A” and col2=3
SELECT * FROM tab WHERE col1=“A” or col2=3
SELECT AVG(col3) FROM tab
SELECT AVG(col3) FROM tab GROUP BY col1
SELECT col1, AVG(col3) FROM tab GROUP BY col1
Breve aula sobre SQL
A sentença abaixo cria mesma tabela que usamos com aggregate() na aula passada.
sqldf('SELECT setor, estacao, AVG(abund) FROM dad GROUP BY setor,estacao')