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

Hi <

i have 3 columns like below.

 

Name          age  sex

kalyan,reddy,27,M

Goutham,reddy,28,M

 

i want to import the name kalyan,reddy & goutham,reddy under column Name.

 

Thanks in advance

1 ACCEPTED SOLUTION

Accepted Solutions
Kurt_Bremser
Super User

Wrap up the input line from the back end:

data want;
input;
length
  name $50
  age 8
  sex $1
;
nwords = countw(_infile_,',');
sex = scan(_infile_,-1,',');
age = input(scan(_infile_,-2,','),best.);
do i = 1 to nwords - 2;
  name = catx(',',name,scan(_infile_,i,','));
end;
drop i nwords;
cards;
kalyan,reddy,27,M
Goutham,reddy,28,M
;
run;

View solution in original post

6 REPLIES 6
andreas_lds
Jade | Level 19

Import as two variables, then use a cat-function to create the required value in a new variable.

sg_kr
Obsidian | Level 7

thank you, but any other way except this.

RW9
Diamond | Level 26 RW9
Diamond | Level 26

The import program needs to have a logical method of reading the data.  It does this by having a delimiter.  In your case the delimiter is used within the data, hence you have the choices:

enlcose the data which has the delimiter within quotes

change the delimier to something which does not appear in the data

import the data as is and post process the data

There is no other logical way of identifying data which may or may not be part of the same variable.

Kurt_Bremser
Super User

Wrap up the input line from the back end:

data want;
input;
length
  name $50
  age 8
  sex $1
;
nwords = countw(_infile_,',');
sex = scan(_infile_,-1,',');
age = input(scan(_infile_,-2,','),best.);
do i = 1 to nwords - 2;
  name = catx(',',name,scan(_infile_,i,','));
end;
drop i nwords;
cards;
kalyan,reddy,27,M
Goutham,reddy,28,M
;
run;
muratatik
Obsidian | Level 7

 You can use infile and dsd options. But your name variable sould be in quote marks.

data want;
infile datalines dsd dlm=",";
input Name :$15. age sex $;
datalines;
'kalyan,reddy',27,M
'Goutham,reddy',28,M
;
run;
sg_kr
Obsidian | Level 7
Thanks for your reply.
but the data is to be import from a sheet and now enclosed in " ".

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 6 replies
  • 892 views
  • 0 likes
  • 5 in conversation