Alterar variáveis de acordo com condições no R

Para gerar ou alterar condicionalmente valores de variáveis no R, comumente usamos a notação de linhas e colunas de um data.frame:

dados[condicao == 1, var1] <- 1

onde var1 pode ser uma ou um vetor de variáveis. Entretanto, as funções base do R não possuem uma sintaxe simples para alterar valores de variáveis condicionalmente, avaliando o comando por grupos. Para exemplificar o problema, esta é a operação equivalente no software Stata:

by id, sort: replace var2 = 1 if condicao == 1

Entra em ação o pacote data.table, que possui várias funcionalidades para manipulação de dados. Primeiro, é preciso instalar e carregar o pacote e declarar a base de dados como um data.table, e depois aplicar o comando:

install.packages("data.table")
library(data.table)

dados <- data.table(dados)

dados[condicao == 1, var2 := 1, by=id]

Note o uso do operador :=. Ele preserva a estrutura atual dos dados ao gerar a nova variável. Outra opção é usar =, que transforma a base e entrega apenas um resultado calculado para cada elemento de id. É possível usar várias variáveis para identificar grupos (ex.: by=.(id1,id2)).

Tags:

Atualizado em: