На этой странице
Преобразование данных — методические заметки
Здесь собраны решения, на которых построены правила преобразования данных: какое соглашение, оценка, значение по умолчанию или запасной вариант стоит за каждым методом. Все подтверждающие их числа получены на наборе-примере (cafe.ru.csv, его спецификация находится в той же папке). Разделы идут в том же порядке, что и в руководстве.
Редактор правил
Наблюдение вне всех групп правило с группами превращает в пропуск, а заполнение оставляет как есть. Разбиение на интервалы, стандартизация и последовательность вычисляют результат по группе (точку разбиения, среднее и SD, соседнюю строку), и у наблюдения с пустой группой вычислять его не из чего. Если бы исходное значение сохранялось, в одном столбце рядом с преобразованными числами оказалось бы непреобразованное, поэтому такое наблюдение получает пропуск. То же относится к наблюдению с пустым значением порядка в правиле последовательности: при упорядоченном проходе для него нет места. По той же причине при разбиении на интервалы и стандартизации пропуск получает группа без единой числовой ячейки (или такой же столбец без групп): вычислять точку разбиения или среднее не из чего, а если пропустить её текст на выход, в выходном столбце, в том числе в пометке 0/1, окажутся значения, которых метод не вычислял. Заполнение устроено наоборот: оно записывает значения только в пустые ячейки, так что наблюдение, которое не удалось отнести к группе, просто не заполняется, и его значение, заданное или пустое, остаётся. Оба решения следуют одному принципу: преобразование не оставляет в столбце непреобразованных значений, а заполнение не уничтожает существующих.
Проверка. Если заполнить время ожидания в кафе средним по филиалу, шесть пустых ячеек филиала «Набережная» получат 4.84, а девять ячеек «Привокзальной» — 5.57. У участника без филиала ячейка осталась бы пустой.
Столбец порядка сортируется как числа, если числом является каждое заданное значение, иначе как текст, и сортировка устойчива. Столбцом порядка может быть дата, выгруженная как текст, номер визита или отметка времени в секундах. Приложение не знает, что именно в нём записано, и поэтому решает по содержимому столбца. Если все непустые ячейки — конечные числа, строки упорядочиваются как числа, иначе сравнением текста с учётом языковых правил, так что 10 идёт после 9 в числовом столбце и после 1 в текстовом. При равных значениях сохраняется порядок файла: две строки с одинаковым значением порядка обрабатываются в том порядке, в каком были импортированы, и запуск на том же файле воспроизводим.
Типы правил
Перекодирование значений
Соответствие сравнивает значения как текст, а числовую замену записывает числом. Ячейки сравниваются с введённым старым значением как строки, поэтому столбец, импортированный как числа, и тот же столбец, импортированный как текст, перекодируются одинаково, а соответствие, написанное для одного набора данных, переносится на другой через библиотеку правил. Замена, распознаваемая как число, хранится числом, и столбец, перекодированный в числовые коды, при определении типов после запуска получает непрерывный тип. Замена, не похожая на число, остаётся текстом. Таблица соответствий собирает различные значения всех выбранных входных переменных в каноническом порядке уровней, принятом в анализах (по возрастанию, если все уровни числовые, иначе по алфавиту), так что предзаполненная таблица выглядит так же, как таблица частот.
Перекодирование диапазонов
Обе границы входят в диапазон, пересечения не допускаются, а пустая граница хранится как открытый конец. Включённые границы соответствуют тому, как диапазоны обычно записывают: 1–3 → low, 4–5 → high на целочисленной шкале. Полуоткрытые границы, как [a, b) у разбиения на интервалы, закрыли бы промежутки, которые включённые границы оставляют на непрерывных данных (29.5 между 18–29 и 30–65), но выбросили бы 3 и 5 из такой таблицы и изменили бы результат каждого правила, уже сохранённого в проекте или библиотеке. Поэтому границы остаются включёнными, а незаметную цену промежутков снимает редактор: он считает ячейки, попавшие между диапазонами, а что с ними станет, решает строка Все остальные значения. Две строки с общей включённой границей обе претендовали бы на значение на этой границе, и если решать спор порядком строк, опечатка останется незамеченной. Поэтому редактор не принимает пересекающиеся диапазоны и диапазоны с минимумом больше максимума. Строку «всё остальное», которую раньше давала таблица с пересечениями (широкий диапазон внизу, исключения над ним), заменяет строка Все остальные значения. Правило, сохранённое до появления проверки, по-прежнему выполняется по первой подходящей строке, так что его результаты не меняются. Пустая граница сохраняется как null и при выполнении трактуется как −∞ или +∞, а не хранится как бесконечность: правило попадает в библиотеку правил в виде JSON, где бесконечностей нет и любая из них превратилась бы в null. Если хранить null с самого начала, правило после экспорта и импорта ничем не отличается от сохранённого.
Разбиение на интервалы
Точки разбиения по данным — квантили типа 7, а точка на минимуме или ниже отбрасывается. Правило квантилей ставит точку j/k на линейно интерполированную порядковую статистику — это тип quantile() по умолчанию в R и тот же тип, что у остальных квантилей приложения, — поэтому точка, скопированная из предпросмотра в перекодирование диапазонов, совпадает с числом, которое вернёт quantile(x, j/k). Точка на минимуме или ниже (много совпадающих значений в начале шкалы или k больше числа различных значений) оставила бы нижний интервал пустым. Такая точка отбрасывается, интервалы перенумеровываются, а предпросмотр сообщает, сколько их осталось. Так в столбце не появляется метка, которую не получит ни одно наблюдение. Совпадающие точки сливаются так же. Заданные точки разбиения используются в том виде, в каком сохранены: заданный список — это определение, а не оценка.
Проверка. Тертили 185 значений времени ожидания в кафе равны 3.6333 и 5.9333 (quantile(ожидание, c(1/3, 2/3)) в R), и в интервалах оказываются 62, 61 и 62 участника. Внутри филиалов точки разбиения — 3.5 и 5.7 для «Набережной» и 3.8 и 6.4 для «Привокзальной».
Метки интервалов записываются с шестью значащими цифрами. Метка интервала — это данные: она становится уровнем нового столбца, поэтому не форматируется по настройке точности отображения, которую читатель может изменить уже после запуска правила. Шести значащих цифр достаточно, чтобы точку разбиения, выведенную приложением, можно было ввести в перекодирование диапазонов и все наблюдения попали в те же интервалы. Интервалы полуоткрыты, [a, b), как в cut(right = FALSE) в R, поэтому наблюдение в точке разбиения принадлежит интервалу выше неё, что и видно по скобкам в тексте интервала.
Проверка. Тертили времени ожидания получают метки < 3.63333, [3.63333, 5.93333) и ≥ 5.93333.
Фиктивные переменные
Опорный уровень по умолчанию — первый в порядке сортировки, как в модулях регрессии. Набор фиктивных переменных, построенный здесь, и категориальный предиктор, закодированный внутри регрессии, должны совпадать в выборе уровня без столбца, иначе коэффициенты измерялись бы относительно разных точек отсчёта. Модули регрессии берут первый уровень в каноническом порядке, и правило поступает так же, а в качестве альтернатив предлагает самый частый уровень и любой уровень по имени. Если выбранного уровня в данных больше нет (после перекодировки выше по списку или на другом файле), правило не завершается ошибкой, а берёт первый уровень, и в описании видны и запрошенный уровень, и использованный. При кодировании эффектов опорный уровень получает −1, так что столбцы в сумме по уровням дают ноль, а свободный член равен общему среднему. Поэтому коэффициенты и оказываются отклонениями от этого среднего, а не от опорного уровня.
Объединение уровней
Нижняя граница 5 взята из правила ожидаемых частот. Приближение хи-квадрат для критерия по таблице сопряжённости обычно считают приемлемым, когда ожидаемые частоты не меньше пяти, а уровень, в котором меньше пяти наблюдений, вряд ли даст такие частоты в какой-либо таблице. Поэтому минимальное число по умолчанию взято из этого правила, и объединение для таблицы сопряжённости делается одним нажатием. В методе k самых частых уровней равенство на границе решает канонический порядок уровней, поскольку сортировка по частоте устойчива: уровни поступают в неё в каноническом порядке, и два уровня с одинаковой частотой его сохраняют. Остаётся более ранний уровень, и повторный запуск даёт тот же результат.
Проверка. Для общей оценки кафе (оценка) при минимальном числе 5 баллы 1, 2 и 3 (их поставили 2, 1 и 3 участника) объединяются в «Прочие», а балл 4, который поставили 7 участников, сохраняется.
Лог-отношения
Строки замыкаются до вычисления любого лог-отношения, и любой способ обработки нулей работает с замкнутой строкой. Лог-отношение — это отношение двух частей одной строки, так что сумма строки сокращается, и счётные данные, проценты и доли дают одни и те же координаты. Это масштабная инвариантность по Эйчисону (Aitchison 1986), и правило делает её явной, сначала деля каждую строку на её сумму. Строка с пропущенной, нечисловой или отрицательной частью не является композицией и получает пропуск во всех столбцах при любом способе обработки нулей. То же относится к строке с нулевой суммой, которую никакое замыкание не приведёт к долям. Координаты ILR — опорные балансы Эгоскуэ, Павловски-Глан, Матеу-Фигерас и Барсело-Видаля (Egozcue, Pawlowsky-Glahn, Mateu-Figueras & Barceló-Vidal 2003): i-й баланс сопоставляет часть i с геометрическим средним следующих за ней частей с множителем , где r — число этих частей. Поэтому координаты ортонормированы. Каждая из них названа по одной части, и коэффициент при ilr_<part> описывает эту часть относительно остальных.
δ по умолчанию — 0.65 от наименьшей ненулевой доли. Мультипликативная замена Мартин-Фернандеса, Барсело-Видаля и Павловски-Глан (Martín-Fernández, Barceló-Vidal & Pawlowsky-Glahn 2003) ставит малую долю на место каждого нуля и умножает остальные части на 1 − (число нулей × δ), так что сумма строки остаётся равной единице, а отношения между ненулевыми частями не меняются. Авторы рекомендуют δ, равное 0.65 от предела обнаружения. Предел обнаружения приложению взять неоткуда, поэтому вместо него оно берёт наименьшую ненулевую долю в данных и применяет тот же множитель 0.65, а пользователь, знающий предел, вводит 0.65 от него. Строку, в которой на нули при таком δ пришлась бы вся сумма (число нулей × δ не меньше 1), нельзя перемасштабировать, и она получает пропуск.
Проверка. Если привести к долям число визитов в кафе до и после смены меню, нулевая часть есть у 11 строк из 200, а наименьшая ненулевая доля равна 1/8, так что δ = 0.65 × 0.125 = 0.08125. Два участника, не приходивших ни в одном из периодов, дают нулевую сумму и получают пропуск.
Стандартизация
Робастная z масштабирует MAD множителем 1.4826. Медианное абсолютное отклонение нормальной выборки составляет 0.6745 её SD, поэтому деление на 1.4826 × MAD (1.4826 = 1/0.6745) приводит робастную z к той же шкале, что и обычную: на нормальных данных они совпадают, а выброс, растягивающий SD, на робастную z почти не влияет. Функция mad() в R по умолчанию применяет ту же константу. Порог в MAD от медианы в поле Порог измеряется в тех же масштабированных единицах, так что 3 MAD и 3 SD отмечают одно и то же расстояние на нормальной выборке и расходятся только там, где хвост растянул SD.
Проверка. У времени ожидания в кафе медиана 4.9 и масштабированное MAD 2.965 (mad(ожидание) в R), так что у самого долгого ожидания, 19.9, робастная z равна 5.06, а обычная — 5.05. Порог 3 MAD от медианы равен 13.80, и выше него оказываются два ожидания, 16.3 и 19.9. Порог 3 SD от среднего равен 13.94 и отмечает те же два.
Процентильные ранги считают совпадения наполовину, а нормальные оценки строятся по позициям Блома и ван дер Вардена. Процентильный ранг со средними рангами для совпадений — это доля выборки строго ниже значения плюс половина доли совпадающих с ним. Наименьшее значение получает , наибольшее — (а не 0 и 100), и все совпадающие значения получают один и тот же процентиль. Так процентильный ранг определяют SPSS и большинство учебников. Позиция Блома (Blom 1958) — самое точное из простых приближений к математическому ожиданию нормальной порядковой статистики, так что в столбце оказываются значения, которые нормальная выборка того же объёма в среднем принимает на этих рангах. Позиция ван дер Вардена (van der Waerden 1952) — обычная эмпирическая вероятность, в хвостах чуть менее экстремальная. Обе дают столбец нормальной формы, каким бы ни был исходный, но разности в нём уже не выражены в исходных единицах.
Проверка. Самое короткое ожидание в кафе, 0.3, получает процентильный ранг 0.27, а самое долгое, 19.9, — 99.73, то есть . Оценка Блома для самого долгого ожидания равна 2.709 — столько же даёт qnorm((185 - 3/8)/(185 + 1/4)).
Наблюдаемый размах — запасной вариант, а не значение по умолчанию. POMP и обратное кодирование определены через диапазон шкалы, то есть через наименьший и наибольший ответы, допустимые инструментом, а по столбцу приложение этот диапазон определить не может. У пункта 1–5, на который никто не ответил 5, наблюдаемый максимум равен 4, и переворот относительно него переводит 1 в 4 вместо 5: каждый перевёрнутый балл сдвигается на единицу, а с ним меняются сумма шкалы и её корреляции с другими переменными. Поэтому правило берёт введённые пределы и обращается к наблюдаемому размаху только для незаданной границы, а в описании всякий раз указан использованный размах, так что запасной вариант не срабатывает незаметно.
Проверка. В обратном пункте кафе медленно встречаются все пять баллов, поэтому правило с пустым диапазоном переворачивает его как 6 − x (2 становится 4, 5 становится 1), а описание показывает наблюдаемый диапазон 1–5.
Сдвиг области определения переводит наименьшую ячейку в 1 для функций, не определённых в нуле, и в 0 для функций, определённых в нуле. У логарифма и обратной величины нет значения в 0, поэтому столбец с нулевой или отрицательной ячейкой сдвигается на 1 − min, и наименьшая ячейка становится ровно 1: её логарифм равен 0, а обратная величина — 1. Квадратный корень и log(1 + x) в нуле определены, поэтому сдвигаются только на −min, и все нули остаются нулями. Сдвиг аддитивен и зависит от данных только через их минимум. Описание его показывает, ведь сдвинутый логарифм — уже другое преобразование, и тому, кто воспроизводит столбец, нужна эта константа. Преобразование Бокса — Кокса использует тот же сдвиг, что и логарифм, поскольку при λ = 0 это логарифм, а в остальных случаях — степень сдвинутого значения. Преобразованию Йео и Джонсона (Yeo & Johnson 2000) сдвиг не нужен: это семейство и создано для того, чтобы работать с отрицательными значениями.
Проверка. Самое короткое ожидание в кафе равно 0.3, поэтому логарифму сдвиг не нужен. Логарифм меняет асимметрию с 1.27 на −0.93, то есть перекашивает распределение в другую сторону, как и показано на странице о распределениях. Столбец с нулём перед логарифмированием был бы сдвинут на 1.
λ — точка максимума профильной логарифмической функции правдоподобия, найденная методом золотого сечения на [−2, 2] и округлённая до трёх знаков. Для преобразования Бокса — Кокса (Box & Cox 1964) профильная логарифмическая функция правдоподобия при заданном λ равна , где второе слагаемое — логарифм якобиана преобразования. Для Йео — Джонсона слагаемое якобиана равно . На практике функция унимодальна, поэтому поиск методом золотого сечения на [−2, 2] (в этих пределах степенное преобразование ещё поддаётся интерпретации) находит её максимум с точностью до 10⁻⁴ за несколько десятков вычислений функции, не требуя производной. Результат округляется до трёх знаков, чтобы в описании стояло в точности то значение λ, с которым вычислен столбец: читатель, введя его обратно, получит тот же столбец. У постоянного столбца нет правдоподобия, которое можно было бы профилировать, и λ для него равно 1.
Проверка. На времени ожидания в кафе преобразование Бокса — Кокса даёт оценку λ = 0.395 (MASS::boxcox на сетке с шагом 0.001 достигает максимума при том же значении), а преобразование Йео — Джонсона — 0.212.
Пороги по умолчанию — 5-й и 95-й процентили или 3 SD либо 3 MAD, а процентиль должен быть меньше 50. Пять процентов в каждом хвосте — обычный в учебниках уровень винзоризации, а за пределами трёх SD или MAD у нормальной выборки лежит 0.3% наблюдений. Значение по умолчанию в обеих единицах одно и то же, так что оба порога отмечают одинаковое расстояние на нормальной выборке и расходятся только там, где хвост растянул SD. Порог в MAD выброс сдвинуть не может, а правило модифицированной z-оценки со страницы о выбросах — та же оценка с границей 3.5. Процентиль 50 и выше поставил бы нижний порог выше верхнего и сделал бы выбросами все ячейки, поэтому правило его отклоняет. Процентили здесь — квантили типа 7, как и у интервалов.
Проверка. 5-й и 95-й процентили времени ожидания в кафе равны 1.6 и 10.44 (quantile(ожидание, c(.05, .95)) в R), так что 5-процентная винзоризация опускает десять ожиданий выше 10.44 до этого значения, а девять ожиданий ниже 1.6 поднимает до 1.6.
Последовательность
Процентное изменение от нуля — пропуск, а скользящее среднее усредняет имеющиеся в окне значения. Изменение относительно предыдущей строки, равной 0, — это деление на ноль (±∞ или 0/0), и бесконечность в столбце обесценила бы любую статистику по нему, поэтому ячейка получает пропуск, как и в случае, когда пуста любая из двух строк. Скользящее среднее по w строкам — это среднее валидных ячеек в окне из w строк, заканчивающемся данной. Оно не дожидается, пока наберутся w строк: в первых w − 1 строках окно короче, при пустой ячейке усредняются остальные, и пропуск получает только окно без единой валидной ячейки. Поэтому ряд скользящих средних начинается с первого наблюдения, а не на w − 1 строк позже. Накопленная сумма по той же причине следует правилу sum(v1:v7): пустые ячейки пропускаются, а не распространяют пропуск дальше.
Пропущенные значения
По оси x интерполяции откладывается значение порядка, если оно числовое, а при равных значениях порядка разрыв делится пополам. Линейной интерполяции между ближайшими числовыми ячейками нужна позиция каждой строки. По умолчанию это место строки в её группе, а если переменная Упорядочить по числовая — её значение, так что разрыв в три недели между двумя измерениями заполняется соразмерно неделям, а не числу строк между ними. У двух опорных точек с одинаковым значением порядка нет расстояния, которое можно было бы поделить, поэтому строки между ними получают значение посередине. Нечисловая ячейка при интерполяции считается разрывом (через текст прямую не провести), тогда как LOCF и NOCB переносят как есть любую непустую ячейку, в том числе текстовую.
Мода — первое из одинаково частых значений в каноническом порядке, записанное как исходная ячейка. У столбца с двумя одинаково частыми значениями две моды. Заполнение берёт ту, что раньше в каноническом порядке уровней (по возрастанию, если значения числовые, иначе по алфавиту), поэтому результат воспроизводим и не зависит от порядка строк. Ячейка записывается в том виде, в каком хранилась, и числовой столбец, заполненный модой, остаётся числовым.
Управление правилами
Порядок списка — это порядок выполнения, поэтому порядок, нарушающий зависимость, отклоняется, а не исправляется сортировкой. Правило, использующее столбец, который создаёт правило ниже, выполняется раньше, чем этот столбец появляется. То же происходит с правилом, использующим собственный результат. Сортировка по зависимостям исправила бы выполнение, но список показывал бы уже не тот порядок, в котором правила выполняются, а именно список читатель принимает за запись преобразования. Поэтому редактор сохраняет заданный вами порядок и отклоняет сохранение или перетаскивание, нарушающее зависимость, называя правило, которое создаёт столбец. Два правила, переписывающие один столбец на месте, такой зависимости не образуют: двойная перезапись столбца — сознательная последовательность, и допустим любой её порядок.
Правило с ошибкой оставляет созданные им столбцы пустыми, а переписываемые на месте — такими, какими их оставили правила выше. Прежний результат правила в столбце, который оно только что не смогло записать, неотличим от правильного, поэтому созданный столбец очищается. В переписываемом на месте столбце данные были и до правила, и очистка уничтожила бы значения, которых правило не вычисляло, поэтому в нём остаётся то, что записали правила выше. В обоих случаях правила ниже всё равно выполняются, а карточка сообщает об ошибке. Правило, ссылающееся на отсутствующую в наборе данных переменную, не выполняется вовсе, вместо того чтобы считать отсутствующий столбец сплошными пропусками: столбец пустых значений, записанный по несуществующей переменной, выглядит как результат, а затемнённая карточка с перечнем недостающего — нет.
Библиотека правил
Библиотека называет переменные по именам, а проект — по номерам. Внутри проекта правило ссылается на столбцы по их положению в файле. Правило из библиотеки предназначено для других данных, где на том же месте может стоять что угодно, поэтому при добавлении в библиотеку сохраняются имена переменных, а при добавлении в файл они ищутся в загруженном наборе данных. Правило попадает либо на ту переменную, для которой написано, либо ни на какую, но никогда не на чужую, оказавшуюся в том же столбце. Содержимое правил тоже сравнивается в форме с именами, так что одно правило, добавленное из двух наборов данных с разным порядком столбцов, остаётся одной записью библиотеки.
Правило в библиотеке помнит свои зависимости, потому что собственного порядка у библиотеки нет. В файле правила зависят друг от друга только через порядок списка, а запись библиотеки, добавленная в другой файл, этот порядок теряет. Поэтому при добавлении в библиотеку для каждого правила запоминаются правила выше, которые создают нужные ему столбцы, и правила, чьи столбцы оно переписывает, а при добавлении в файл выбранные правила упорядочиваются по этим записям, остальные — от самого раннего добавления. Записи, добавленные до появления зависимостей, упорядочиваются по косвенным признакам: выбранное правило, создающее столбец, который использует другое, идёт первым. Замкнутый круг зависимостей разрывается на самой ранней записи.
Конвертер таблиц
Автоматические идентификаторы испытуемых — номера строк, поэтому испытуемого, занимающего несколько строк широкой таблицы, восстановить нельзя. Без столбца испытуемого конвертер нумерует строки широкой таблицы и даёт всем измерениям строки один идентификатор. Это верно, когда в широком файле одна строка на испытуемого, но ведёт к незаметной ошибке, когда их несколько: испытуемый, измеренный дважды, превращается в двух, ни одна пара «испытуемый × замер» не повторяется, и парные анализы проходят все проверки структуры на плане, не соответствующем данным. Ни один последующий шаг не может отличить одно от другого, поэтому предупреждение показывается под списком всё время, пока выбран автоматический вариант, а не появляется один раз.
Режим, число замеров и метки замеров считываются из имён переменных, если все группы согласуются. Отображаемые имена выбранных переменных делятся по общему префиксу или суффиксу на группы одного размера (score_t1, score_t2 вместе с rt_t1, rt_t2). Если во всех группах одинаковое число переменных, это число становится числом замеров. Различающиеся части имён становятся метками замеров, если во всех группах они одинаковы, а по расположению групп в файле определяется, сгруппирован ли он по замеру или по переменной. Если разбиение не подходит (группы разного размера или имена без общей части), остаются значения по умолчанию, а если группы расходятся в метках, ставятся T1, T2 …. Распознавание только предварительно заполняет форму и не отменяет того, что пользователь введёт потом.
Без идентификатора перевод в длинный формат отбрасывает полностью пустые строки, а перевод в широкий дополняет ими, так что одна операция отменяет другую. Независимые группы, записанные рядом, — это столбцы разной длины, и более короткий заканчивается пустыми ячейками. Такая пустая ячейка — не наблюдение, а лишь конец меньшей группы, поэтому в режиме Нет (независимые группы) строка, где пропущены все измерения, отбрасывается, и каждая группа сохраняет свой объём. С идентификатором пустая строка означает другое — испытуемого, пропустившего замер, — и остаётся: последующие анализы учитывают пропущенный замер как часть плана. Режим Нет — сопоставлять строки по порядку выполняет обратную операцию: строки разных сочетаний ключей ставятся рядом, а более короткие группы дополняются пропусками, так что широкий файл с группами разной длины после перевода в длинный формат и обратно остаётся прежним.
Повторяющаяся ячейка «идентификатор × ключ» не агрегируется: конвертер отказывается работать. Если у двух строк длинной таблицы совпадают идентификатор и сочетание ключей, в широкой таблице на два значения приходится одна ячейка. Усреднение или выбор первого значения дали бы правдоподобный на вид широкий файл, не соответствующий данным (две сессии, слитые в один балл, или дубликат, скрывающий ошибку ввода), и ни один последующий шаг этого бы не заметил. Повтор почти всегда означает, что идентификатор неполон — в него не вошёл столбец сессии или пробы, — поэтому конвертер показывает первые повторы и просит добавить столбец, который их разделяет.
Столбец без роли переносится, только если в нём одно значение на идентификатор. Возраст или группа испытуемого — одно значение, повторённое в каждой его строке длинной таблицы, и в широкую строку оно попадает один раз. Пропуск вторым значением не считается, так что возраст, записанный лишь в одной строке, тоже переносится. У столбца, значения которого меняются в пределах испытуемого (второе измерение, отметка времени пробы), нет единственного значения для широкой строки, а взять первое значило бы выдать значение одного замера за характеристику испытуемого. Поэтому такой столбец удаляется, а кнопка рядом с ним переносит его в столбцы значений, где он разворачивается как измерение. Без идентификатора нет испытуемого, которому могло бы принадлежать значение, и удаляются все такие столбцы.