DATA Step, Macro, Functions and more

How to extract numbers from variables' names

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 14
Accepted Solution

How to extract numbers from variables' names

[ Edited ]

Hi there,

 

I have a wide form of longitudinal dataset recording scores of multiple times like this

 

ID Group   Time0 Time1 Time4 Time9 Time15 Time24 Time37 (...)

 

1  A           10        15        17        9          8            29         9

2  A            21       39        32        .           33          31         23

(...)

 

and I'm using array to convert this dataset to convert this dataset to the long form, like that

 

ID Group Time Score

1   A         0       10

1   A         1        15

(...)

 

Since there are lots of Timepoints in the wide data, and the numbers are irregular, I have to write a ton of "if...else" following the array, just to change values of variable "Time" in the new dataset. 

I wonder if Is there any way to just extract the number following the variable Time0 Time4... and put it as the value in the new Time variable?

 

Thanks so much!

 

Joe


Accepted Solutions
Solution
‎03-02-2017 02:24 PM
Super User
Posts: 17,963

Re: How to extract numbers from variables' names

Use VNAME to get the variable name in an array. 

Use COMPRESS to retain only digits. 

Use INPUT to convert to a number. 

View solution in original post


All Replies
Solution
‎03-02-2017 02:24 PM
Super User
Posts: 17,963

Re: How to extract numbers from variables' names

Use VNAME to get the variable name in an array. 

Use COMPRESS to retain only digits. 

Use INPUT to convert to a number. 

Occasional Contributor
Posts: 14

Re: How to extract numbers from variables' names

[ Edited ]

Thanks Reeza!

 

I did the following code and it get the jobs done!

 

	time = input(compress(vname(array[i]),,'kd'), 6.);

 

 

 

 

 

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 136 views
  • 2 likes
  • 2 in conversation