MATLAB Answers

join tables based on string in one cell in the other

40 ビュー (過去 30 日間)
jkr 2018 年 2 月 9 日
コメント済み: jkr 2018 年 2 月 9 日
I have 2 tables, call them foo and bar. foo has strings in the form "foobar" in column 1. bar has strings in the form 'foobar' in column one.
foo{1,1} = "060514191658"
bar{1,1} = 1×1 cell array {'060514191658'}
foo(1,1) = table CaseID "060514191658"
bar(1,1) = table CaseID '060514191658'
When I try
>> join(foo,bar)
I get:
Error using tabular/join (line 129)
Left and right key variables 'CaseID' and 'CaseID' are not comparable because one is a non-cell.
How do I convert one or another to be able to join on this column.
I've tried every conversion I can think of and still can't get there.
  1 件のコメント
per isakson
per isakson 2018 年 2 月 9 日
You have different types of strings as value of CaseID. See



Eric Tao
Eric Tao 2018 年 2 月 9 日
You need to convert strings in foo.var1 to characters, assuming the 1st column name in foo and bar are both 'var1'.
foo.var1_converted = cellfun(@(x) char(x),foo.var1,'UniformOutput',false);
then you will get a new column 'var1_converted' in foo, which contains the converted characters from strings in column 'var1'.
Then run:
new_tab = join(foo,bar,'leftkeys','var1_converted','rightkeys','var1');
you will get your joined table.
  1 件のコメント
jkr 2018 年 2 月 9 日
Excellent, thank you, just what I needed.


その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by