Eu tenho um dataframe parecido com este:
example <- data.frame(
date = as.Date(c('2001-01-01',
'2001-01-02',
'2001-01-01',
'2001-01-02')),
PID_A = c(1091, 1091, 1037, 1037),
PID_B = c(2091, 2091, 2037, 2037),
resp_A = c(3,1,2,4),
resp_B = c(2,4,3,1),
xxx_connect_A = c(6,2,5,3),
xxx_connect_B = c(5,3,6,2)
)
Quero recolher _As e _Bs para formar uma coluna para cada variável.
Aqui está a saída desejada:
example_solution <- data.frame(
date = as.Date(rep(c('2001-01-01',
'2001-01-02'),4)),
PID = c(1091, 1091, 2091, 2091, 1037, 1037, 2037, 2037),
resp = c(3,1,2,4,2,4,3,1),
xxx_connect = c(6,2,5,3,5,3,6,2)
)
Tentei esse código de uma resposta anterior do stackoverflow, mas agora não funciona tão bem porque minhas variáveis têm um número diferente de sublinhados.
example |>
pivot_longer(-date, names_to = c(".value", "who"), names_sep = "_")
Alguém sabe uma maneira eficiente de corrigir isso?
Obrigado!
Em vez de
names_sep
, você pode usarnames_pattern
uma expressão regular para dividir os dadosA expressão regular procura o último "_" que está no final da string e divide ali.