Hi again.
I have a dataset with 100 rows of data with 4 columns.
I am trying to code the following and would like some help please:
For each row
If Table1.column1 = 'FOREX' (which is a string) and Table1.column4 < 0
then return Table1.column3 in Table1.column2
otherwise
If Table1.column1 = 'FOREX' (which is a string) and Table1.column4 >=0
then return Table1.column2 = (1% of Table1.column3) + Table1.column4
End

 Réponse acceptée

dpb
dpb le 15 Avr 2014
One (of many) way(s) to write it...
ix=strcmp(T.c1,'FOREX') & T.c4<0;
T(ix).c2=T(ix).c3;
ix=strcmp(T.c1,'FOREX') & T.c4>=0;
T.c2(ix)=0.01*T(ix).c3+T1(ix).c4;
Names abbreviated to protect...

Plus de réponses (1)

Matthew
Matthew le 16 Avr 2014

0 votes

The above worked fine for numeric but I'm having a similar problem when I am wanting replace a field with text in the dataset. Can you help please?
iy=or(strcmp(CtpyList.deal_type,'120'), strcmp(CtpyList.deal_type,'123'));
This works fine and creates the table iy which details 0s or 1s when it meets the above condition.
CtpyList.customer_nr(iy) = CtpyList.Customer_nr_Sec(iy);
This works but it concatenates the cell i.e. customer_nr(iy) now reads: 1 NaN
Note that NaN has been converted to string.
Any ideas on how to totally replace this string NaN with the field in the corresponding row for Customer_nr_Sec??

6 commentaires

dpb
dpb le 16 Avr 2014
ly isn't a table, it's a logical array (vector). Need to keep class types straight or you run into the problems below.
What are the types of ...nr and ...nr_Sec, respectively? You can't mix and match types or, as you've discovered, Matlab either chokes or sometimes will try to do an implicit cast for you...
Matthew
Matthew le 16 Avr 2014
Hi dpb,
Yes sorry - iy is a logical array.
customer_nr and Customer_nr_Sec are column headers in datasets and the data in these cells are both string (even the NaN which is currently present in customer_nr due to a num2str performed in a previous script).
dpb
dpb le 16 Avr 2014
Modifié(e) : dpb le 16 Avr 2014
Probably your problem is that they're character strings, maybe? I can't see your data itself but what does
CtpyList.customer_nr(iy,:) = CtpyList.Customer_nr_Sec(iy,:);
do? Does that solve the problem?
If not, post back with the results of
whos CtpyList.customer_nr(iy)
whos CtpyList.Customer_nr_Sec(iy)
for some location in iy -- say the first T would be ok.
Matthew
Matthew le 16 Avr 2014
dpb - you beauty!
This first line of code you sent me does the trick - thank you again!
dpb
dpb le 16 Avr 2014
Good; thought it might.
You do understand why, then???
Matthew
Matthew le 17 Avr 2014
Yes

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by