Ну, это загрузило все без ошибок, но я не очень хорошо следую коду! Однако я посмотрел на новые данные, которые он создал, и немного озадачен тем, что откуда приходят некоторые имена (вероятно, из-за того, что я не очень хорошо понимаю код), но кажется, что возможно, это странным образом дублирует некоторые столбцы ... мои данные для этого раздела в data.old - это число q1 - q170 (а новый набор данных - q1-q158, так что примерно столько столбцов я должен закончить )) но я думал, что заголовки столбцов будут сохранены

я есть два больших набора данных, и я пытаюсь переформатировать старый набор данных, чтобы расположить вопросы в том же порядке, что и более новый набор данных (чтобы я мог легко выполнить t-тесты для каждого идентичного вопроса, чтобы отследить значительные изменения за годы между наборами данных). Новая версия одновременно удаляла и добавляла вопросы при переходе со старой версии.

Способ, которым я пытался это сделать, R продолжает падать из-за, насколько я могу судить, векторов, которые слишком велики. Я не уверен, как они становятся такими большими, как бы то ни было! Ниже то, что я делаю:

Оба набора данных имеют одинаковый формат. Оригинальные наборы 415 для новых и 418 для старых. Я хочу сопоставить первые примерно 158 столбцов нового набора данных со старыми. Каждый набор данных имеет имена столбцов q1-q415, а данные в каждом столбце числовые 1-5 или NA. На вопрос / столбец приходится около 100 ответов, в старом наборе данных больше респондентов (140 строк в старом и 114 в новом). Пример ниже (но имейте в виду, что в полном наборе более 400 столбцов и более 100 строк!)

Ниже приведен пример того, как выглядит data.old. data.new выглядит так же, только data.new имеет больше строк числа / ответов. Здесь я показываю вопросы с 1 по 20 и первые 10 строк. data.old = 418 столбцов (от q1 до q418) x 140 строк data.new = 415 столбцов (от q1 до q415) x 114 строк Мне нужно сопоставить первые 170 столбцов data.old с первыми 157 столбцами data.new Для этого я буду удалять 17 столбцов из data.old (вопросы, которые были в вопроснике data.old и удалены из вопросника data.new), а также добавляю 7 новых столбцов в data.old (который будет содержать NA ... заполнители, для которых в data.new были введены новые вопросы, которых не было в опроснике 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

Таким образом, в новом наборе некоторые вопросы были удалены, некоторые новые были добавлены, а некоторые изменили порядок, поэтому я прошел и создал подмножества старых данных в том порядке, в котором мне нужно было бы объединить их снова, чтобы соответствовать новому набору данных. , Когда вопрос не существует в старом наборе данных, я хочу использовать вопрос в новом наборе данных, чтобы я (теоретически) мог выполнить свои t-тесты в большом цикле.

    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]

Затем я пытался собрать столбцы обратно в один набор, я попробовал оба

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

и я тоже попробовал

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

Однако каждый раз, когда я пытаюсь выполнить эти функции, R зависает, а затем вылетает. Мне удалось заставить его отображать ошибку один раз, и он сказал, что он не может работать с вектором 10 Мб, а затем я получил несколько ошибок, включающих более 1000 Мб векторов. Я не совсем уверен, насколько велики мои векторы, когда он выходит из строя с помощью набора 3, который составляет всего 23 столбца данных в таблице, и наборы данных, которые я обычно использую, имеют длину более 400 столбцов.

Есть ли другой способ сделать это, который не вызовет сбой моей программы и проблемы с памятью (и не потребует, чтобы я печатал имена столбцов более 100 столбцов), или есть какой-то элемент кода, который я пропускаю где я получаю сток памяти? Я пытался изо всех сил пытаться стрелять в это и провел час, разбираясь с крахом R, без всякой удачи, выясняя, как заставить это работать

Спасибо за помощь!

Ответы на вопрос(1)

Ваш ответ на вопрос