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   

にいくつかのデータを含む新しいデータセットを作成したいと考えています。

と同じように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 に答える