Reordenar (excluir / alterar ordem) colunas de dados no quadro de dados

Tenho dois conjuntos de dados grandes e estou tentando reformatar o conjunto de dados mais antigo para colocar as perguntas na mesma ordem que o conjunto de dados mais recente (para que eu possa executar facilmente testes t em cada pergunta idêntica para rastrear alterações significativas nos 2 anos entre conjuntos de dados). A nova versão excluiu e adicionou perguntas ao mudar da versão antiga.

Da maneira que tenho tentado fazer isso, R continua travando devido a, pelo melhor que pude imaginar, os vetores serem muito grandes. Eu não tenho certeza de como eles estão ficando tão grandes, no entanto! Abaixo está o que estou fazendo:

Ambos os conjuntos de dados têm o mesmo formato. Os conjuntos originais são 415 para o novo e 418 para o antigo. Quero combinar as primeiras aproximadamente 158 colunas do novo conjunto de dados com as antigas. Cada conjunto de dados possui nomes de colunas que são q1-q415 e os dados em cada coluna são numéricos de 1 a 5 ou NA. Existem aproximadamente 100 respostas por pergunta / coluna. O conjunto de dados antigo possui mais respondentes (140 linhas antigas versus 114 linhas novas). Um exemplo está abaixo (mas lembre-se de que existem mais de 400 colunas no conjunto completo e mais de 100 linhas!)

A seguir, é apresentado um exemplo de como o data.old se parece. data.new parece o mesmo apenas data.new tem mais linhas de número / na respostas. Aqui, mostro as perguntas 1 a 20 e as 10 primeiras linhas. data.old = 418 colunas (q1 até q418) x 140 linhas data.new = 415 colunas (q1 a q415) x 114 linhas Preciso corresponder as primeiras 170 COLUNAS de dados.old às primeiras 157 COLUNAS de dados.novo Para Para fazer isso, vou excluir 17 colunas do data.old (perguntas que estavam no questionário data.old e excluídas do questionário data.new), mas também adicionarei 7 novas colunas ao data.old (que conterá NAs ... titulares de locais onde data.news foram introduzidas novas perguntas que não existiam no questionário data.old)

    >data.old
    q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 q16 q17 q18 q19 q20
    1  3  4  3  3  5  4  1  NA  4  NA  1   2    NA  5   4  3    2   3   1
    3  4  5  2  2  4  NA 1   3  2  5   2   NA   3   2   1  4    3   2   NA
    2  NA 2  3  2  1  4  3   5  1  2   3   4    3   NA  NA 2    1   2   5
    1  2  4  1  2  5  2  3   2  1  3   NA  NA   2   1   5  5    NA  2   3
    4  3  NA 2  1  NA 3  4   2  2  1   4   5    5   NA  3  2    3   4   1
    5  2  1  5  3  2  3  3  NA  2  1   5   4    3   4   5  3    NA  2   NA
    NA 2  4  1  5  5  NA NA  2  NA 1   3   3    3   4   4  5    5   3   1
    4  5  4  5  5  4  3  4   3  2  5   NA  2    NA  2   3  5    4   5   4
    2  2  3  4  1  5  5  3  NA  2  1   3   5    4   NA  2  3    4   3   2
    2  1  5  3  NA 2  3  NA  4  5  5   3   2    NA  2   3  1    3   2   4

Então, no novo conjunto, algumas das perguntas foram excluídas, outras foram adicionadas e algumas mudaram de ordem. Por isso, criei subconjuntos de dados antigos na ordem em que precisaria combiná-los novamente para combinar com os novos conjunto de dados. Quando uma pergunta não existe no conjunto de dados antigo, quero usá-la no novo conjunto de dados para que eu possa (teoricamente) executar meus testes t em um grande loop.

    dataold.set1 <- dataold[1:16]
    dataold.set2 <- dataold[18:19]
    dataold.set3 <- dataold[21:23]
    dataold.set4 <- dataold[25:26]
    dataold.set5 <- dataold[30:33]
    dataold.set6 <- dataold[35:36]
    dataold.set7 <- dataold[38:39]
    dataold.set8 <- dataold[41:42]
    dataold.set9 <- dataold[44]
    dataold.set10 <- dataold[46:47]
    dataold.set11 <- dataold[49:54]
    dataold.set12 <- datanew[43:49]
    dataold.set13 <- dataold[62:85]
    dataold.set14 <- dataold[87:90]
    dataold.set15 <- datanew[78]
    dataold.set16 <- dataold[91:142]
    dataold.set17 <- dataold[149:161]
    dataold.set18 <- dataold[55:61]
    dataold.set19 <- dataold[163:170]

Eu estava tentando juntar as colunas novamente em um conjunto, tentei ambos

    dataold.adjust <- merge(dataold.set1, dataold.set2)
    dataold.adjust <- merge(dataold.adjust, dataold.set3)
    dataold.adjust <- merge(dataold.adjust, dataold.set4)

e eu também tentei

    dataold.adjust <- cbind(dataold.set1, dataold.set2, dataold.set3)

No entanto, toda vez que tento executar essas funções, R congela e trava. Consegui fazer com que ele exibisse um erro uma vez e ele dizia que não podia funcionar com um vetor de 10 Mb e, em seguida, recebi vários erros envolvendo mais de vetores de 1000 Mb. Não tenho muita certeza de como meus vetores são tão grandes quando isso ocorre no conjunto 3, que são apenas 23 colunas de dados em uma tabela, e os conjuntos de dados que normalmente estou usando têm mais de 400 colunas.

Existe outra maneira de fazer isso que não fará com que o meu programa travar e tenha problemas de memória (e não exija que eu digite os nomes das colunas com mais de 100 colunas) ou que exista algum elemento de código aqui faltando onde estou recebendo um coletor de memória? Eu tenho tentado resolver o problema e passei uma hora lidando com o R batendo sem nenhuma sorte para descobrir como fazer isso funciona

Obrigado pela ajuda!

questionAnswers(1)

yourAnswerToTheQuestion