tenho os dados abaixo
data<-structure(list(id = c("R_88j7lG37gLfxk22", "R_6DK8lERVf8lSQf4"
), t1_choice = c("2", "3"), t2_choice = c("1", "3"), t3_choice = c("1",
"2"), t4_choice = c("2", "1")), row.names = c(NA, -2L), class = c("tbl_df",
"tbl", "data.frame"))
esta é a primeira linha dos meus dados:
e quero convertê-lo para um formato longo como abaixo com esta lógica. Para cada participante existem 12 linhas, porque existem 4 tarefas (4 't's) e 3 perfis em cada tarefa (3 'p's). A coluna de escolha é um binário onde é 1 se o perfil naquela linha foi escolhido naquela tarefa e 0 se não foi, que é informação contida nas colunas 'tN_choice'.
meu método está errado
tasks<-4
profiles<-3
#column position of first task
cpft<-2
#column position of last task
cplt<-5
# Extracting choices
choices <- as.numeric(unlist(long[, cpft:cplt]))
# Create the new dataframe with id and choice columns
new_df <- data.frame(
id = rep(data$id, each = tasks*profiles),
choice = rep(0, times = length(id))
)
# Replacing values based on original choices
for (i in 1:(tasks*profiles)) {
idx <- (i - 1) * profiles + choices[i]
new_df$choice[idx] <- 1
}
Provavelmente você pode tentar isso
que dá