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)
).