Estou tentando reunir dois conjuntos de colunas. Cada conjunto precisa terminar em uma nova coluna, mas os dados das linhas estão vinculados, portanto, o uso sequencial de tidyr::gather()
não garantirá a retenção da organização entre colunas. Parece que tidyr::pivot_longer()
posso conseguir isso, mas estou perplexo. Uma postagem semelhante está aqui , mas a resposta envolve o uso do grep para renomear colunas, o que não consigo desvendar e também não deveria ser necessário aqui.
library(tidyverse)
df <- data.frame(
Position=1:5,
A_Width=3:7,
B_Width=4:8,
A_Error=seq(0, 2.0, 0.5),
B_Error=seq(0.3, 1.5, 0.3)
)
df <- df %>%
tidyr::pivot_longer(
cols=c(A_Width, B_Width, A_Error, B_Error),
names_to= ? ,
names_pattern= ? ,
)
##Desired Data Frame
df_long <- data.frame(
Position=rep(1:5,2),
Group=c(rep("A",5), rep("B",5)),
Width=c(3:7,4:8),
Error=c(seq(0, 2.0, 0.5), seq(0.3, 1.5, 0.3))
)
Podemos usar
.value
withnames_to
para usar a segunda parte dos nomes das colunas para especificar as novas colunas para as quais esses valores devem ir.Resultado (na ordem encontrada, pode ser classificado)
Você pode usar uma combinação de
pivot_longer
epivot_wider