Нестек данных из одной переменной в несколько переменных
преобразует таблицу или расписание, U
= unstack(S
,vars
,ivar
)S
, в эквивалентную таблицу или расписание, U
, который не сложен. vars
задает переменные в S
, каждая из которых не сложена в несколько переменных в U
. В целом, U
содержит больше переменных, но меньше строк, чем S
.
The ivar
входной параметр задает переменную в S
это unstack
использует как переменную индикатора. Значения в ivar
определите, какие переменные в U
содержат элементы, взятые из vars
после разукладки.
unstack
функция по-разному обрабатывает оставшиеся переменные в таблицах и расписаниях.
Если S
является таблицей, тогда unstack
обрабатывает оставшиеся переменные следующими сгруппированными переменными. Каждая уникальная комбинация значений в сгруппированных переменных идентифицирует группу строк в S
который не сложен в одну строку U
.
Если S
является расписанием, тогда unstack
отбрасывает оставшиеся переменные. Однако, unstack
рассматривает вектор времени строк как сгруппированную переменную.
Вы не можете отменить стек имен строк таблицы, времени строк расписания или указать в качестве переменной индикатора. Вы можете задать имена строк или время строк как постоянные переменные с 'ConstantVariables'
аргумент.
преобразует таблицу или расписание U
= unstack(S
,vars
,ivar
,Name,Value
)S
с дополнительными опциями, заданными одним или несколькими Name,Value
аргументы в виде пар.
Для примера можно задать, как unstack
преобразует переменные из S
в переменные в U
.
Составьте таблицу, указывающую количество снегопадов в различных городах для различных штормов. Укажите города используя categorical
массив, поскольку в этой таблице имеется фиксированный набор имен городов.
Storm = [3;3;1;3;1;1;4;2;4;2;4;2]; Town = categorical({'Natick';'Worcester';'Natick';'Boston';'Boston';'Worcester';... 'Boston';'Natick';'Worcester';'Worcester';'Natick';'Boston'}); Snowfall = [0;3;5;5;9;10;12;13;15;16;17;21]; S = table(Storm,Town,Snowfall)
S=12×3 table
Storm Town Snowfall
_____ _________ ________
3 Natick 0
3 Worcester 3
1 Natick 5
3 Boston 5
1 Boston 9
1 Worcester 10
4 Boston 12
2 Natick 13
4 Worcester 15
2 Worcester 16
4 Natick 17
2 Boston 21
S
содержит три снегопада для каждого шторма, по одному для каждого города. S
находится в сложенном формате, с Town
наличие categorical
тип данных. Табличные переменные, которые имеют categorical
тип данных является полезными переменными индикатора и сгруппированных переменных для распаковки.
Разделите переменную Snowfall
в три переменные, по одной для каждого города, заданного в переменной, Town
. Таблица выхода, U
, находится в неукладанном формате.
U = unstack(S,'Snowfall','Town')
U=4×4 table
Storm Boston Natick Worcester
_____ ______ ______ _________
3 5 0 3
1 9 5 10
4 12 17 15
2 21 13 16
Каждая строка в U
содержит данные из строк в S
которые имеют то же значение в сгруппированной переменной, Storm
. Порядок уникальных значений в Storm
определяет порядок данных в U
.
Распакуйте данные и примените функцию агрегации к нескольким строкам в одной группе, которые имеют одинаковые значения в переменной индикатора.
Составьте расписание, содержащее данные о цене двух запасов в течение двух дней. Чтобы задать время строки, используйте datetime
значения. Указание имен запасов с помощью categorical
массив, поскольку это расписание имеет фиксированный набор имен запасов.
Date = [repmat(datetime('2008-04-12'),6,1);... repmat(datetime('2008-04-13'),5,1)]; Stock = categorical({'Stock1';'Stock2';'Stock1';'Stock2';... 'Stock2';'Stock2';'Stock1';'Stock2';... 'Stock2';'Stock1';'Stock2'}); Price = [60.35;27.68;64.19;25.47;28.11;27.98;... 63.85;27.55;26.43;65.73;25.94]; S = timetable(Date,Stock,Price)
S=11×2 timetable
Date Stock Price
___________ ______ _____
12-Apr-2008 Stock1 60.35
12-Apr-2008 Stock2 27.68
12-Apr-2008 Stock1 64.19
12-Apr-2008 Stock2 25.47
12-Apr-2008 Stock2 28.11
12-Apr-2008 Stock2 27.98
13-Apr-2008 Stock1 63.85
13-Apr-2008 Stock2 27.55
13-Apr-2008 Stock2 26.43
13-Apr-2008 Stock1 65.73
13-Apr-2008 Stock2 25.94
S
содержит две цены на Stock1
в течение первого дня и четырех цен на Stock2
в течение первого дня.
Составьте расписание, содержащее отдельные переменные для каждого запаса и одну строку для каждого дня. Использование Date
(вектор времени строки) как сгруппированная переменная и применить функцию агрегации, @mean
, к числовым значениям из переменной, Price
, для каждой группы.
[U,is] = unstack(S,'Price','Stock',... 'AggregationFunction',@mean)
U=2×2 timetable
Date Stock1 Stock2
___________ ______ ______
12-Apr-2008 62.27 27.31
13-Apr-2008 64.79 26.64
is = 2×1
1
7
U
содержит среднюю цену для каждого запаса, сгруппированного по дате.
is
определяет индекс первого значения для каждой группы строк в S
. Первое значение для группы с датой 13 апреля 2008 года находится в седьмой строке S
.
S
- Входная таблицаВходная таблица, заданная как таблица или расписание. S
должен содержать переменные данных для удаления стека, vars
и переменную индикатора, ivar
. Остальные переменные в S
можно рассматривать как сгруппированные переменные или постоянные переменные.
vars
- Переменные в S
не сложитьПеременные в S
для удаления стека, заданного как положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек векторов символов, строковые массивы или логический вектор.
ivar
- Переменная индикатора в S
Переменная индикатора в S
, заданный как положительное целое число, символьный вектор или строковый скаляр. Значения в переменной, заданные как ivar
указать, какие переменные в U
содержат элементы, взятые из переменных, заданных как vars
.
Переменная, заданная как ivar
может быть числовым вектором, логическим вектором, символьным массивом, массивом ячеек из векторов символов, строковыми массивами или категориальным вектором.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'AggregationFunction',@mean
применяет функцию агрегации @mean
к значениям в vars
.'GroupingVariables'
- Сгруппированные переменные в S
которые определяют группы строкСгруппированные переменные в S
которые определяют группы строк, заданные как разделенная разделенными запятой парами, состоящая из 'GroupingVariables'
и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы или логический вектор. Каждая группа строк в S
становится одной строкой в U
.
S
может иметь метки строк по первой размерности. Если S
является таблицей, тогда она может иметь имена строк в качестве меток. Если S
является расписанием, тогда оно должно иметь время строки в качестве меток. unstack
может рассматривать метки строк как сгруппированные переменные.
Если вы не задаете 'GroupingVariables'
, и S
является расписанием, тогда unstack
рассматривает время строки как сгруппированную переменную.
Если вы задаете 'GroupingVariables'
, и S
имеет имена строк или время строки, затем unstack
не рассматривает их как сгруппированные переменные, если только вы не включите их в стоимость 'GroupingVariables'
.
'ConstantVariables'
- Переменные, постоянные в группеПеременные, постоянные в группе, заданные как разделенная разделенными запятой парами, состоящая из 'ConstantVariables'
и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы или логический вектор.
Значения для этих переменных в U
берутся из первой строки в каждой группе в S
.
Можно включать имена строк или интервалы между строками S
когда вы задаете значение 'ConstantVariables'
.
'NewDataVariableNames'
- Имена для новых переменных данных в U
Имена для новых переменных данных в U
, заданная как разделенная разделенными запятой парами, состоящая из 'NewDataVariableNames'
и массив ячеек из векторов символов или строковых массивов.
Если вы не задаете 'NewDataVariableNames'
, затем unstack
создает имена для новых переменных данных в U
на основе значений в переменной индикатора, заданной как ivar
.
'AggregationFunction'
- Функция агрегации из значений в vars
к одному значению@sum
(числовые данные) или @unique
(нечисловые данные) (по умолчанию) | указатель на функциюФункция агрегации из значений в vars
к одинарному значению, заданному как разделенная разделенными запятой парами, состоящая из 'AggregationFunction'
и указатель на функцию. unstack
применяет эту функцию к строкам из той же группы, которые имеют то же значение в ivar
. Функция должна агрегировать значения данных в одно значение.
Если вы не задаете значение 'AggregationFunction'
, затем unstack
использует различные функции агрегации по умолчанию в зависимости от типа данных.
Для числовых данных функция агрегации по умолчанию является sum
.
Для нечисловых данных функция агрегации по умолчанию является unique
.
Если нет значений данных для агрегирования, потому что нет значений данных, соответствующих заданному значению индикатора в ivar
после разукладки, затем unstack
необходимо заполнить пустой элемент в не сложенной выходной таблице. В этом случае, unstack
вызывает функцию агрегации с пустым массивом в качестве входных данных. Значение, которое unstack
заполняет зависит от того, что возвращает функция агрегации, когда ее вход является пустым массивом.
Значение, возвращаемое функцией агрегации, когда нет данных для агрегации | Значение, вставленное в пустые элементы неукладанной таблицы |
---|---|
Функция агрегации вызывает ошибку |
|
Пустой массив | Заполнение значения соответствующего типа данных ( Пример: Если функция агрегации |
Скалярное значение | Скалярное значение, возвращенное из функции агрегации. Пример: Если функция агрегации |
Векторный, матричный или многомерный массив |
|
'VariableNamingRule'
- Правило для именования переменных в U
'modify'
(по умолчанию) | 'preserve'
Правило для именования переменных в U
, заданная как разделенная разделенными запятой парами, состоящая из 'VariableNamingRule'
и либо значение 'modify'
или 'preserve'
.
Значения 'VariableNamingRule'
задайте следующие правила для именования переменной в таблице выхода или timetable.
Значение | Правило |
---|---|
| Измените имена, взятые из входной таблицы или timetable, чтобы соответствующие имена переменных в выходе также были действительными MATLAB® идентификаторы. |
| Сохраните исходные имена, взятые из входной таблицы или расписания. Соответствующие имена переменных в выход могут иметь любой Юникод® символы, включая пространства и символы, отличные от ASCII. Примечание: В некоторых случаях,
|
U
- Выходная таблицаВыводит таблицу, возвращается как таблица или расписание. U
содержит незаставленные переменные данных, сгруппированные переменные и первое значение каждой группы из любых постоянных переменных.
Порядок данных в U
основан на порядке уникальных значений в сгруппированных переменных.
Можно хранить дополнительные метаданные, такие как описания, переменные модули, имена переменных и имена строк в U
. Для получения дополнительной информации смотрите разделы « Свойств» table
или timetable
.
is
- Индекс на S
Индексируйте к S
, возвращается как вектор-столбец. Для каждой строки в U
, вектор индекса, is
, определяет индекс первого значения в соответствующей группе строк в S
.
Сгруппированные переменные являются переменными утилиты, используемыми для группировки или классификации данных. Сгруппированные переменные полезно для суммирования или визуализации данных по группам. Можно задать группы в таблице, задав одну или несколько сгруппированные переменные.
А сгруппированная переменная может быть любым из следующих:
Категориальный вектор
Массив ячеек из символьных векторов
Строковые массивы
Символьный массив
Числовой вектор, обычно содержащий положительные целые числа
Логический вектор
Строки с одним и тем же значением сгруппированной переменной относятся к одной и той же группе. Если вы используете несколько сгруппированные переменные, строки с одной и той же комбинацией значений сгруппированных переменных относятся к одной и той же группе.
Можно задать несколько переменных данных в S
, и каждая переменная становится набором неукладанных переменных данных в U
. Используйте вектор положительных целых чисел, массив ячеек или строковые массивы, содержащий несколько имен переменных, или логический вектор, чтобы задать vars
. Переменная одного индикатора, заданная как входной параметр, ivar
, применяется ко всем переменным данных, заданным как vars
.
Поведение изменено в R2020a
В R2020a, если вы не задаете 'AggregationFunction'
аргумент пары "имя-значение", тогда функция агрегации по умолчанию для нечисловых данных является unique
функция. В предыдущих релизах не было функции агрегации по умолчанию для нечисловых данных, поэтому unstack
приведет к ошибке.
Поведение изменено в R2020a
В R2020a происходят изменения поведения, когда функция агрегации не имеет данных для агрегации. Эта ситуация может возникнуть, когда нет значений данных, соответствующих значениям в переменной индикатора после распаковки. В таких случаях, unstack
по существу вызывает функцию агрегации в пустом массиве.
Значение, возвращаемое функцией агрегации, когда нет данных для агрегации | Поведение в R2020a | Поведение в предыдущих релизах |
---|---|---|
Переменная данных является числовой, и функция агрегации вызывает ошибку. |
|
|
Переменная данных нечисловая, и функция агрегации возвращает пустой массив. |
|
|
Переменная данных является числовой, и функция агрегации возвращает скалярное значение (для примера, |
|
|
Переменная данных является числовой, и функция агрегации возвращает вектор, матрицу или многомерный массив. |
|
|
Указания и ограничения по применению:
The 'NewDataVariableNames'
необходимо указать аргумент имя-значение. Его значение должно быть постоянным.
The vars
и ivars
входные параметры (переменные данных и переменные индикатора) должны быть постоянными.
Если вы задаете сгруппированные переменные и постоянные переменные, то они должны быть постоянными.
Если вы задаете функцию агрегации, то она должна быть постоянной.
Если вход является расписанием с регулярным временем строки и вы задаете сгруппированные переменные, которые не включают время строки, то выходное расписание может иметь неправильное время строки. Несмотря на то, что интервалы между временами выходных строк могут выглядеть одинаково, выходное расписание считает вектор значений строки неправильным.
Если переменный вход таблицы или timetable является массивом ячеек с векторами символов, то unstack
заполняет пустые камеры соответствующей выходной переменной символьными массивами 1 на 0 в сгенерированном коде. В MATLAB, unstack
заполняет такие погрешности символьными массивами 0 на 0.
unstack
функция не поддерживает генерацию кода, когда входная таблица или расписание имеют переменную, которая является гетерогенным массивом ячеек, который не может быть преобразован в однородный массив ячеек.
Если вход имеет переменную, которая является однородным массивом ячеек или которая может быть преобразована в единицу, то 'AggregationFunction'
необходимо указать аргумент имя-значение. Значение по умолчанию 'AggregationFunction'
является 'unique'
. Но unique
функция не поддерживает массивы ячеек.
join
| Объединить таблицы | stack
| Стек Табличных переменных | Нестек табличных переменных
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.