&引用;数据变量必须是数字或逻辑“变量”;在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'})