 # How to assign a string value instead of 1 or 0 for a logical operator outcome

I would like to assign a string instead of a 1 or 0 for a logical operator outcome but am unsure of how to go about this.

``pvals_1pc = pvals .< 0.01;``

I currently have a vector (pvals) and can generate another vector of 1 or 0 based on whether the each element is less than 0.01. Is it possible to assign a string value to each element if the value is less than 0.01 instead?

Thank you.

1

accepted

The string version of the vertical concatenation operator `|` and the horizontal concatenation operator `~` are `\$|` and `\$~`. However, I think in this case you want to combine the characters into one string. In that case, you can use the string combine operator `\$+`. For example:

``````str = "J" \$+ "o" \$+ "i" \$+ "n";
print str;``````

will print

``Join``

So the modified version below should do what you want.

``````//**********Assigning Asterisks for Coefficient Significance*********
proc(1) = asts(pvals);

local pvals_1pc, pvals_5pc, pvals_10c, pvals_sig, str;

str = " " \$| "*";
pvals_1pc = str[(pvals .< 0.01)+1];
pvals_5pc = str[(pvals .< 0.05)+1];
pvals_10c = str[(pvals .< 0.10)+1];
pvals_sig = pvals_10c\$+pvals_5pc\$+pvals_1pc;

retp(pvals_sig);
endp;`````` aptech

1,488

1

Do you mean something like this?

``````str = "above" \$| "below";
pvals = { 0.001,
0.02,
0.003,
0.1 };
pvals_1pc = str[(pvals .< 0.01)+1];

print pvals_1pc;``````

which returns

``````below
above
below
above`````` aptech

1,488

0

Thank you - this solves my problem! The only issue is later on, I am unable to concatenate the vectors as I did before. Is there a different command when using stings for this purpose? I get the following error: G0165 : Type mismatch or missing arguments.

I have pasted my code below if it clarifies. Many thanks for your assistance.

``````//**********Assigning Asterisks for Coefficient Significance*********
proc(1) = asts(pvals);

local pvals_1pc, pvals_5pc, pvals_10c, pvals_sig, str;

str = " " \$| "*";
pvals_1pc = str[(pvals .< 0.01)+1];
pvals_5pc = str[(pvals .< 0.05)+1];
pvals_10c = str[(pvals .< 0.10)+1];
pvals_sig = pvals_10c~pvals_5pc~pvals_1pc;

retp(pvals_sig);
endp;`````` 0

This works perfectly - thank you! ### Have a Specific Question?

Get a real answer from a real person

### Need Support?

Get help from our friendly experts.