BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Sasulee
Fluorite | Level 6

Hi all,

I have 3 data vectors read in iml which are

截屏2020-06-18下午7.24.44.png

 I want to mark these data by following discipline:

  • label = put where k<k0;
  • label = call where k>k0;
  • label = mix where k=k0.

   How can I do? Thank you!

1 ACCEPTED SOLUTION

Accepted Solutions
IanWakeling
Barite | Level 11

You can use essentially the same syntax to construct Q like this:

  lab = choose(k<k0,'put','mix');
  lab = choose(k>k0,'call',lab);
  Q = choose(k<k0, p, (p+c)/2);
  Q = choose(k>k0, c, Q);
  print k0 k lab p c Q;

View solution in original post

3 REPLIES 3
IanWakeling
Barite | Level 11

I think this will work

  lab = choose(k<k0,'put','mix');
  lab = choose(k>k0,'call',lab);
  print k0 k lab;

however you may need to screen missing values out first if you have them.

Sasulee
Fluorite | Level 6
Awesome, it works, thanks!
however, how can I use this info to define another row? like
create a new vector Q
Q=p (a numeric variable ) if lab='put';
Q=c (a numeric variable ) if lab='call';
Q=(p+c)/2 if lab='mix';
The vector should be continuous, like
p c lab Q
1 2 put 1
2 3 call 3
4 5 call 5
6 7 mix 6.5

Can you help?
IanWakeling
Barite | Level 11

You can use essentially the same syntax to construct Q like this:

  lab = choose(k<k0,'put','mix');
  lab = choose(k>k0,'call',lab);
  Q = choose(k<k0, p, (p+c)/2);
  Q = choose(k>k0, c, Q);
  print k0 k lab p c Q;

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 3 replies
  • 1241 views
  • 5 likes
  • 2 in conversation