===== R Snippets =====
==== Subsetting ====
# Selecionar apenas as linhas com determinados valores (lidando com NA)
dataset[which(dataset$variable>4),]
# Remove rows with NA values
dataset<-dataset[complete.cases(dataset),]
# Subset com base em uma string contida num campo
subset<-dataset[!grepl("string",dataset$variable),] # A última vírgula é porque seria possível ainda inserir critérios para as colunas
# Selecionar apenas as linhas com determinados valores
dataset[dataset$variable %in% c("valor1","valor2"),] # O %in% retorna TRUE se for igual a um dos valores e FALSE se não for
# Selecionar apenas determinadas colunas
myvars <- c("X7", "X8", "X9","X10", "X11", "X12","X26","X28","X29","X30","X31","X32","X33","X34")
cnefeNonResidential<-cnefeNonResidential[myvars]
# Salvar dados como TXT
write.table(dataset, "tidyData.txt",row.names=FALSE)
# Salvar como arquivo TXT "puro"
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
====Dplyr====
# selecionar apenas as linhas desejadas
newdataset<-filter(dataset,variable>30)
# com mais de uma coluna como critério:
newdataset<-filter(dataset,variable1>30 & variable2<50)
# Criar novo campo só quando uma condição for verdadeira
rawData<-mutate(rawData, newvariable = ifelse((usoBase==1),[valor caso verdadeiro],[valor caso falso]))
# Sumarizar
dataset<-group_by(data, variable) # dataset e a coluna que será usada para indicar os grupos
newdataset<-summarize(dataset,
newVariable1=mean(variable1),
newVariable2=max(variable2),
newVariable3=median(variable3),
newVariable4=sum(NumJanelas[NumDoPavto<5], na.rm = TRUE), # Testa condição em outro campo para saber se soma ou não.
HighVisibility=sum(Visibilidade=="AV", na.rm = TRUE), # Conta valores específicos de um campo
NumberPlots=n_distinct(Lote), # Conta quantidade de valores únicos dentro de um campo
Quant=n(), # conta quantos elementos dentro de cada valor usado para agrupar
# Testa duas condições. Se TRUE, atribui primeiro valor (poderia ser uma operação entre campos); se FALSE, atribui último valor:
residentialGround = ifelse((uso=="Residencial" & numPavimento==1),area,0)
) #vai usar os grupos indicados no comando anterior
# se houver valores nulos em alguma variável, pode dar erro. Solução:
newdataset<-summarize(dataset, newVariable1=mean(variable1,na.rm=TRUE), newVariable2=max(variable2),newVariable3=median(variable3)) #vai usar os grupos indicados no comando anterior
# Criar uma nova coluna para realçar possíveis erros com base em uma combinação de valores de outras colunas
checa<-mutate(rawData,
x=ifelse(pavtosBase == 0 & pavtosTorre != 0, 1, 0) # condição, valor caso TRUE, valor caso FALSE
)