Remodelar dados longos para amplos em R [duplicado]

Esta pergunta já tem uma resposta aqui:

Como remodelar dados de formato longo para amplo? 9 respostas

Estou tentando remodelar alguns dados do usuário em R. Eu tenho um data.frame de IDs de sessão. Cada sessão tem um User_ID e data. Eu gostaria de usar a variável "User_ID" como minha "Chave", mas apenas para as observações que têm "userType" de "New Visitor". Portanto, haverá uma única linha para cada "Novo visitante". Em seguida, passe cada ID de sessão subsequente como variável separada. Por exemplo, se um ID de usuário tiver 3 IDs de sessão no total, haveria um total de 6 variáveis:

Por exemplo, se este é o quadro de dados para um usuário:

    date <- c('2015-01-01','2015-01-02','2015-01-02','2015-01-10')
    userID <- c('100105276','100105276','100105276','100105276')
    sessionID <- c('1452632119','1452634303','1452637067','1453600979')
    userType <- c('New Visitor','Returning Visitor','Returning Visitor','Returning Visitor')
    df <- cbind(date,userID,sessionID,userType)

Em vez disso, gostaria de retornar isso:

    userID      sessionID1  date1      SessionID2  date2      SesionID3 date3
    100105276   1452632119  2015-01-01 1452634303  2015-01-02 100105276 2015-01-02

Se houver algum ID do usuário que não tenha os IDs da sessão subsequentes, um valor "na" será passado onde as variáveis estão com valores ausentes. Eu li sobre o uso do tidyr ou do remodelar2 para fazer isso, mas não consegui fazê-los fazer exatamente o que estou procurando.

questionAnswers(1)

yourAnswerToTheQuestion