Subconjunto de dados no R
O R tem recursos avançados de indexação para acessar elementos de objetos. Esses recursos podem ser usados para selecionar e excluir variáveis e observações. Os trechos de código a seguir demonstram maneiras de manter ou excluir variáveis e observações e de obter amostras aleatórias de um conjunto de dados.
Seleção (manutenção) de variáveis
# select variables v1, v2, v3
myvars <- c("v1", "v2", "v3")
newdata <- mydata[myvars]
# another method
myvars <- paste("v", 1:3, sep="")
newdata <- mydata[myvars]
# select 1st and 5th thru 10th variables
newdata <- mydata[c(1,5:10)]
Para praticar isso de forma interativa, experimente os exercícios de seleção de elementos do quadro de dados no capítulo Quadros de dados deste curso de introdução ao R.
Excluindo (DROPPING) variáveis
# exclude variables v1, v2, v3
myvars <- names(mydata) %in% c("v1", "v2", "v3")
newdata <- mydata[!myvars]
# exclude 3rd and 5th variable
newdata <- mydata[c(-3,-5)]
# delete variables v3 and v5
mydata$v3 <- mydata$v5 <- NULL
Seleção de observações
# first 5 observations
newdata <- mydata[1:5,]
# based on variable values
newdata <- mydata[ which(mydata$gender=='F'
& mydata$age > 65), ]
# or
attach(mydata)
newdata <- mydata[which(gender=='F' & age > 65),]
detach(mydata)
Seleção usando a função de subconjunto
A função subset( ) é a maneira mais fácil de selecionar variáveis e observações. No exemplo a seguir, selecionamos todas as linhas que têm um valor de idade maior ou igual a 20 ou idade menor que 10. Mantemos as colunas ID e Weight.
# using subset function
newdata <- subset(mydata, age >= 20 | age < 10,
select=c(ID, Weight))
No próximo exemplo, selecionamos todos os homens com mais de 25 anos e mantemos as variáveis de peso até renda (peso, renda e todas as colunas entre elas).
# using subset function (part 2)
newdata <- subset(mydata, sex=="m" & age > 25,
select=weight:income)
Para praticar a função subset(), experimente este exercício interativo sobre subsetting data.tables.
Amostras aleatórias
Use a função sample( ) para obter uma amostra aleatória de tamanho n de um conjunto de dados.
# take a random sample of size 50 from a dataset mydata
# sample without replacement
mysample <- mydata[sample(1:nrow(mydata), 50,
replace=FALSE),]