Объединение именных и числовых массивов в набор данных (набор инструментов статистики) - PullRequest
1 голос
/ 15 декабря 2011

Я довольно новичок в программировании, поэтому заранее прошу прощения за неправильное использование какой-либо терминологии.

Моя проблема заключается в следующем:

У меня есть один номинальный массив данных 142 x 1 (CountryList) с уникальными названиями стран и четыре числовых массива 142 x 1, которые содержат информацию об этих странах. Я хочу объединить их в один массив данных размером 142 x 5 'CountryInfo'. Приведенные ниже примеры включают только один из четырех числовых массивов, которые я хочу добавить, но я предполагаю, что если он работает для одного, то же самое относится и к большему.

Я пробовал несколько вещей, включая

CountryInfo = join(CountryList, Info1, 'Type', 'leftouter')

, что вызывает ошибку

??? Undefined function or method 'join' for input arguments of type 'nominal'.

и

CountryInfo = horzcat(CountryList, Info1)

что вызвало ошибку

All input arguments must be from the same categorical class.

Я думал, что использование класса набора данных позволит мне объединять массивы разных классов.

Если вышесказанное не имеет смысла, пожалуйста, помогите мне быть более ясным.

Большое спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Это должно работать:

D1 = dataset({{'Spain';'USA';'France'}, 'CountryList'})
D2 = dataset({[20e6; 250e6; 50e6], 'Population'})
D3 = dataset({[3000;5000;3500], 'GDP'})
D = [D1 D2 D3]

>> D
D = 
    CountryList     Population    GDP 
    'Spain'           2e+07       3000
    'USA'           2.5e+08       5000
    'France'          5e+07       3500
>> size(D)
ans =
     3     3
1 голос
/ 15 декабря 2011

В Matlab массивы / матрицы содержат только числа, а не строки.Для смешивания типов используйте массивы ячеек (используя фигурные скобки).

C1 = {'Spain';'USA'};
C2 = {45;7};
A3 = [3;4];
C3 = mat2cell(A3,[1 1]);
C = [C1 C2 C3]

output:

C = 

'Spain'    [45]    [3]
'USA'      [ 7]    [4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...