O objeto data.table
herda as funcionalidade de um objeto
data.frame
, mas oferece acesso mais rápido e mais
eficiente. A diferença principal é a maneira de acessar os objetos. Com
um objeto data.table
, é possível realizar uma operação do
tipo:
DT[i, j, by]
que significa pegar a tabela DT
, selecionar as linhas
i
, e computar j
agrupado por by
.
Esse mesmo comando exigiria uma sintaxe mais complexa ao trabalhar com
objetos do tipo data.frame
.
É possível imprimir o valor de log(4) com os comandos abaixo:
print( log(4), digits = 16)
## [1] 1.386294361119891
sprintf("%.15f", log(4))
## [1] "1.386294361119891"
A função intersect
encontra a interseção entre dois
vetores, ou seja, os elementos que estão em ambos.
seq(4,28,by=7)
## [1] 4 11 18 25
seq(3,31,by=2)
## [1] 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31
intersect( seq(4,28,by=7), seq(3,31,by=2) )
## [1] 11 25
O comando abaixo irá fazer a operação E elemento a
elemento dos dois vetores de tamanho quatro. Como os vetores são da
classe logical
, o resultado da operação será
TRUE
se ambos os elementos forem TRUE
, e
FALSE
caso contrário.
c(TRUE,TRUE,FALSE,FALSE) & c(TRUE,FALSE,FALSE,TRUE)
## [1] TRUE FALSE FALSE FALSE
Primeiro, vamos carregar a base de dados completa.
file = "../../datasets/extremedatasince1899.csv"
StormMax = read.table(file, header=T, sep=",")
head(StormMax, 3)
## Yr Region Wmax nao soi sst sstmda sun split
## 1 1899 Basin 96.64138 -0.64 -0.21 0.05193367 -0.03133333 8.4 0
## 2 1899 East 90.19791 -0.64 -0.21 0.05193367 -0.03133333 8.4 0
## 3 1899 Basin 90.35300 -0.64 -0.21 0.05193367 -0.03133333 8.4 0
Agora podemos selecionar os eventos que ocorreram apenas no século XX. São 1782 dados de ciclones que ocorreram entre os anos 1900 e 2000.
sec20 = subset(StormMax, subset=StormMax$Yr>1900 & StormMax$Yr<=2000)
dim(sec20)
## [1] 1782 9
Para ordernar os dados em ordem crescente da velocidade do vento
(variável Wmax
), podemos executar o seguinte comando:
sec20 = sec20[ order(sec20$Wmax),]
head(sec20)
## Yr Region Wmax nao soi sst sstmda sun split
## 1553 1987 East 10.00000 -0.695 -1.1633333 0.30893367 0.29500000 33.9 1
## 1559 1987 US 10.00000 -0.695 -1.1633333 0.30893367 0.29500000 33.9 1
## 1541 1986 Florida 10.01247 0.435 -0.2800000 -0.13673300 0.06766667 3.8 1
## 1618 1990 East 15.00000 -0.385 -0.5533333 0.24493367 0.28233333 125.2 1
## 1078 1960 Gulf 15.00052 -0.170 0.3266667 0.33193367 0.05566667 127.2 1
## 1678 1994 East 15.00240 0.780 -1.7700000 0.01293367 0.12233333 25.7 1
tail(sec20)
## Yr Region Wmax nao soi sst sstmda sun
## 877 1950 Basin 160.8074 -0.235 1.1500000 0.004600333 -0.09100000 51.3
## 1585 1988 Basin 160.8934 -1.995 1.5433333 0.047933667 0.09000000 120.1
## 1438 1980 Basin 165.0000 -1.230 -0.3133333 0.093267000 0.01533333 155.0
## 1226 1969 Basin 171.3285 -0.700 -1.0533333 -0.055399667 0.04400000 91.3
## 1236 1969 Gulf 171.3285 -0.700 -1.0533333 -0.055399667 0.04400000 91.3
## 1239 1969 US 171.3285 -0.700 -1.0533333 -0.055399667 0.04400000 91.3
## split
## 877 1
## 1585 1
## 1438 1
## 1226 1
## 1236 1
## 1239 1
media = mean(sec20$Wmax[sec20$Region=="Basin"])
A média da velocidade do vento Wmax
na região
Basin
é 74.9437991.
O gráfico de dispersão entre o ano e a velocidade do vento pode ser gerado com os comandos abaixo. Adicionamos também uma linha com a regressão ajustada estre as duas variáveis. Notamos que não há nenhuma tendência de crescimento ou decrescimento da velociadade ao longo do século XX.
plot(sec20$Yr, sec20$Wmax, pch=20, xlab="Ano", ylab="Velocidade do Vento")
abline(lm(sec20$Wmax ~ sec20$Yr), col=2, lwd=2)
O gráfico também poderia ser gerado usando o pacote
ggplot2
, que facilita a inclusão de uma linha de tendência
suavizada.
library(ggplot2)
ggplot(sec20, aes(Yr,Wmax)) + geom_point() + geom_smooth(method="lm")
## `geom_smooth()` using formula = 'y ~ x'