&引用;数据变量必须是数字或逻辑“变量”;在Matlab中使用grpstats时

&引用;数据变量必须是数字或逻辑“变量”;在Matlab中使用grpstats时,matlab,statistics,grouping,Matlab,Statistics,Grouping,我有一个异构数据集。我想通过一些列来计算组,而不需要做任何额外的操作,比如求和或求平均 然而,函数需要数字数据字段: >> grpstats(ds, {'Field1', 'Field2'}, {'numel'}) Error using dsgrpstats (line 256) Data variables must numeric or logical. Error in grpstats (line 135) [varargout{1:nargout}] = dsgr

我有一个异构数据集。我想通过一些列来计算组,而不需要做任何额外的操作,比如求和或求平均

然而,函数需要数字数据字段:

>> grpstats(ds, {'Field1', 'Field2'}, {'numel'})
Error using dsgrpstats (line 256)
Data variables must numeric or logical.
Error in grpstats (line 135)
    [varargout{1:nargout}] = dsgrpstats(x,group,whichstats,varargin{:}); 
如何克服

更新

奇怪的是,我还不能创建SSCCE

小示例工作:

>> A={'Name', 'Gender'; 'Ann', 'female'; 'John', 'male'; 'Peter', 'male'}
B=cell2dataset(A,'ReadVarNames',true,'ReadObsNames',true)
grpstats(B,{'Gender'},{'numel'})
A = 
    'Name'     'Gender'
    'Ann'      'female'
    'John'     'male'  
    'Peter'    'male'  
B = 
             Gender      
    Ann      'female'    
    John     'male'      
    Peter    'male'      
ans = 
              Gender          GroupCount
    female    'female'        1         
    male      'male'          2  
这就是我想要的。但在我的例子中,我得到

Error using dsgrpstats (line 256)
Data variables must numeric or logical.
并且应该执行以下操作

>> B.Dummy=ones(size(B,1),1)
B = 
             Gender          Dummy
    Ann      'female'        1    
    John     'male'          1    
    Peter    'male'          1    
>> grpstats(B,{'Gender'},{'numel'},'DataVars',{'Dummy'})
ans = 
              Gender          GroupCount    numel_Dummy
    female    'female'        1             1          
    male      'male'          2             2    
更新2(CCSSE)

我找到了。如果数据集包含嵌套单元格数组,则会发生错误:

A={'Name', 'Gender', 'Measurements'
    'Chanel Iman Robinson', 'female', {32, 23, 33}
    'Wilhelmina Cooper', 'female', {38, 24, 36}
    'Arnold Schwarzenegger', 'male', {57, 33, 29}};

B=cell2dataset(A,'ReadVarNames',true,'ReadObsNames',true)

grpstats(B, {'Gender'}, {'numel'})