0
a = dataset({'a' 'b' 'c' 'e' 'h'}',[1 2 3 11 17]', [2 3 4 5 6]',...
   'VarNames',{'Key1' 'Var1' 'test'})

a = 

    Key1       Var1    test
    'a'         1      2   
    'b'         2      3   
    'c'         3      4   
    'e'        11      5   
    'h'        17      6   

我想用 a 中的一些数据制作一个新数据集。

就像b = a.VarNames=={'Key1', 'test'}

因此

b = 

    Key1    test
    'a'       2   
    'b'       3   
    'c'       4   
    'e'       5   
    'h'       6   

我怎样才能做b?

4

3 回答 3

0

如果您无法对键名进行硬编码,我将使用以下内容:

%% Input:
a=dataset({'a' 'b' 'c' 'e' 'h'}',[1 2 3 11 17]',[2:6]','VarNames',{'Key1' 'Var1' 'test'});
extract_keys = {'Key1' 'Var1'};

%% subset extraction:
keys = get(a,'VarNames');
extract_idxs = cellfun(@(str) find(strcmpi(keys ,str),1),extract_keys,'uni',false);
if any(cellfun(@isempty,extract_idxs(:)))
    warning('Dataset:subset_extraction', 'Key mismatch');
end
extract_idxs = cell2mat(extract_idxs);

b = a(:,extract_idxs);

如果在原始数据集中找不到键,则从结果数据集中忽略它们。如果您确定密钥始终匹配,则警告也可能会被删除。如果您不需要警告,您甚至可以将其放入单行中:

b=a(:,cell2mat(cellfun(@(str) find(strcmpi(get(a,'VarNames'),str),1),extract_keys,'uni',false)));
于 2012-08-06T09:34:35.970 回答
0

这是你要找的吗?

b = dataset(a.Key1, a.test, 'VarNames', {'Key1','test'})
于 2012-08-05T05:47:45.670 回答
0

你可以使用

b= [a(:,1) a(:,3)]

于 2012-08-05T09:42:42.593 回答