How do I add an additional column to a cell array based on existing values in another column?
    조회 수: 10 (최근 30일)
  
       이전 댓글 표시
    
I have a cell array (x) of dimensions 900x2. Column 1 is a unique identifier; there are two possible values of the second column, either "1" or "2". I want to add a third column which I want to be "1" if Column 2 is "1" and "0" otherwise.
I had previously asked a similar question where there were strings instead of numbers in Column 2 and a strcmp function was used but I would like to know similar function regarding numbers.
Any help appreciated!
댓글 수: 3
  Jan
      
      
 2019년 6월 12일
				"1" is a string, '1' is a char or char vector, 1 is a number, either as single, double or an integer type. Instead of explaining the contents of the cell as text, prefer to use Matlab syntax, because then it is clear immediately:
x = {'asd', 1; ...
     'bsd', 0};
% And you want to get:
y = {'asd', 1, 0; ...
     'bsd', 0, 1};
 Is this correct?
답변 (3개)
  Jan
      
      
 2019년 6월 12일
        
      편집: Jan
      
      
 2019년 6월 12일
  
      x = {'asd', 1; ...
     'bsd', 0};
x(:, 3) = num2cell(1 - cell2mat(x(:, 2)))
% or:
Value = {0, 1};
x(:, 3) = Value(2 - cell2mat(x(:, 2)))
This was one of the approaches for the char data:
Value  = {'1', '0'};
x(:,3) = Value(2 - strcmp(x(:, 2), 'A'));
Here you can use the values to create the index instead of strcmp, but the equivalence is clear.
댓글 수: 0
  Stephen23
      
      
 2019년 6월 12일
        >> x = {'x1',1';'x2',2;'x3',1}
x = 
    'x1'    [1]
    'x2'    [2]
    'x3'    [1]
>> x(:,3) = {0};
>> x([x{:,2}]==1,3) = {1}
x = 
    'x1'    [1]    [1]
    'x2'    [2]    [0]
    'x3'    [1]    [1]
댓글 수: 0
  Joel Handy
      
 2019년 6월 12일
        
      편집: Joel Handy
      
 2019년 6월 12일
  
      Obviously replace myCellArray with whatever your array is called.
isTwo = cellfun(@(x) x == 2, myCellArray(:,2));
myCellArray(:,3) = num2cell(double(isTwo))
Alternatively
isTwo = [myCellArray{:,2}]' == 2;
myCellArray(:,3) = num2cell(double(isTwo));
I'm not sure which is faster off hand.
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



