将名义和数值数组连接到数据集(统计工具箱)

时间:2011-12-15 13:50:53

标签: matlab

我对编程很新,所以如果我误用了一些术语,我会事先道歉。

我的问题如下:

我有一个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 个答案:

答案 0 :(得分:2)

这应该有效:

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 :(得分:1)

在Matlab中,数组/矩阵只包含数字而不包含字符串。混合类型使用单元格数组(使用花括号)。

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

输出:

C = 

'Spain'    [45]    [3]
'USA'      [ 7]    [4]