Adicionando coluna com soma de variáveis e retirando as variáveis utilizadas usando dplyr

Bom dia/boa tarde/boa noite gente, tudo bem?

Estive nesse final de semana mexendo com o trabalho final do curso de Introdução ao R. Na parte da limpeza de meus dados, achei mais eficiente criar uma coluna através da função mutate() correspondendo à soma de algumas variáveis. No entanto, não achei um jeito “bonito” de excluir as variáveis que utilizei para obter essa soma. Segue exemplo do que fiz utilizando o banco de dados mtcars (só ignorem o fato da soma não fazer sentido conceitualmente kkkkkkkkkk):

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

dados <- mtcars %>%
  mutate(sum_var = rowSums(select(., drat:gear))) %>%
  select(-c(drat, wt, qsec, vs, am, gear))

Created on 2021-07-05 by the reprex package (v2.0.0)

Em outras palavras, existe uma maneira mais eficiente de excluir as variáveis utilizadas para a soma sem utilizar esse select(-vetor) do final? Procurei na documentação da função mutate() e aparentemente existe um argumento .keep para isso, mas não consegui fazer ele funcionar :c

Obs: não sei se cabe perguntar aqui, mas tive um pouquinho de experiência com R antes de fazer o curso, dá problema se eu utilizar alguma função que não tenhamos aprendido no curso mas que torne o trabalho um pouquinho mais eficiente?

Pra fazer o .keep = “unused” funcionar eu só consegui abrindo mão do rowSums e usando o c_across:

mtcars %>%
  rowwise() %>%
  mutate(sum_var = sum(c_across(drat:gear)), .keep = "unused") 
1 curtida

Oi Victor! tudo bem, e contigo?
O Athos já respondeu, mas vou escrever mais uma possibilidade que funciona no exemplo que você deu: usar o operador : para selecionar uma sequência de colunas.

select(-c(drat:gear))

Sobre o obs: não tem problema não! Pode usar funções além do que foi visto.

Abraços!

1 curtida

Oi gente! Peço perdão pela longa demora pra responder, mas me ajudaram demais, muito obrigado :grin:

As duas respostas deram super certo no meu contexto: a alternativa que o Athos deu + a maneira de selecionar colunas que a Beatriz mencionou me fizeram economizar umas boas linhas no código, ele tá muito mais elegante agora.

2 curtidas