Распакуйте данные из одной переменной в несколько переменных
преобразовывает таблицу или расписание, U
= unstack(S
,vars
,ivar
)S
, к переводной таблице или расписанию, U
, это распаковано. vars
задает переменные в S
, каждый из которых распакован в несколько переменных в U
. В общем случае U
содержит больше переменных, но меньше строк, чем S
.
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
значения. Задайте имена запасов с помощью categorlcal
массив начиная с этого расписания имеет фиксированный набор имен запаса.
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
— Переменная Indicator в S
Переменная Indicator в 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'
задайте следующие правила для именования переменной в выходной таблице или расписании.
Значение | Правило |
---|---|
| Измените имена, взятые из входной таблицы или расписания так, чтобы соответствующие имена переменных в выходе были также допустимыми идентификаторами MATLAB®. |
| Сохраните настоящие имена, взятые из входной таблицы или расписания. Соответствующие имена переменных в выходе могут иметь любые символы Unicode®, включая символы non-ASCII и пробелы. Примечание: В некоторых случаях,
|
U
— Таблица OutputВыведите таблицу, возвращенную как таблица или расписание. 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 | Поведение в предыдущих релизах |
---|---|---|
Переменная данных является числовой, и функция агрегации повышает ошибку. |
|
|
Переменная данных является нечисловой, и функция агрегации возвращает пустой массив. |
|
|
Переменная данных является числовой, и функция агрегации возвращает скалярное значение (например, |
|
|
Переменная данных является числовой, и функция агрегации возвращает вектор, матрицу или многомерный массив. |
|
|
join
| Объединяющие таблицы | stack
| Сложите табличные переменные | Распакуйте табличные переменные
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.