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.
4 Answers
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;
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
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!
Your Answer
4 Answers
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;
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
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;
This works perfectly - thank you!