Estou escrevendo uma função para dinamizar uma tabela de dados para um formato longo. Para o cols =
argumento, o nome da primeira coluna será sempre o mesmo, mas a coluna final (e o número de colunas) mudará. Existe uma maneira de pegar o "resto" das colunas sem nomeá-las ou por seus índices?
Digamos que eu tenha estes dados de amostra:
data <- structure(list(Site = c("A", "B"), Group = c("1", "2"), grip = c("S",
"H"), height = c("S", "T"), width = c("W", "N"), QA = c("Y",
"N")), class = "data.frame", row.names = c(NA, -2L))
É assim:
Site Group grip height width QA
1 A 1 S S W Y
2 B 2 H T N N
E às vezes o conjunto de dados terá mais colunas. Digamos que eu queira obter colunas grip:QA
, sem nomear o controle de qualidade ou fornecer seu número de índice. Eu tentei o seguinte:
data %>%
pivot_longer(cols = grip:everything(),
names_to = "Name",
values_to = "value")
Mas recebo o aviso Warning message: In x:y : numerical expression has 6 elements: only the first used
e ele não gira da maneira que desejo. O que estou tentando alcançar é possível?
Você poderia usar
last_col
:Ou, como outra opção, exclua as colunas que você não deseja incluir ao dinamizar usando
!
ou-
:Já que você mencionou
data.table
, aqui está uma solução usandodata.table::melt
:Criado em 08/01/2024 com reprex v2.0.2