Dear Members,
I have below piece of inputs with comma separated entries with 5 columns. I need to extract only column first (e.g, ABC), four (e.g., 654), and fifth (e.g., 14/04/2023 14:17:14), can someone suggest best way to get these.
Input:
"ABC","DATA","G:\Data\ces 202302.csv",654,14/04/2023 14:17:14
"ABC","DATA","G:\Data\ces 202302.csv.bak",654,14/04/2023 14:00:41
"XYZ","DATA","G:\Data\ces 202303.csv",5770,14/04/2023 14:17:39
"XYZ","DATA","G:\Data\ces 202303.csv.bak",5770,14/04/2023 09:49:28
"DEF","DATA","G:\Data\CES individuele.xlsx",104637,23/03/2023 14:53:38
"DEF","DATA","G:\Data\CES.xlsx",23370,23/03/2023 14:53:19
"DEF","DATA","G:\Data\12GR.csv",539,08/02/2023 15:12:13
Output:
"ABC",654,14/04/2023 14:17:14
"ABC",654,14/04/2023 14:00:41
"XYZ",5770,14/04/2023 14:17:39
"XYZ",5770,14/04/2023 09:49:28
"DEF",104637,23/03/2023 14:53:38
"DEF",23370,23/03/2023 14:53:19
"DEF",539,08/02/2023 15:12:13
I would suggest reading that fifth column as a datetime value.
data want; infile cards delimiter=','; length dummy $8 first $8 four 8; informat fifth anydtdtm30.; format fifth datetime19.; input first dummy dummy four fifth; drop dummy; cards; "ABC","DATA","G:\Data\ces 202302.csv",654,14/04/2023 14:17:14 "ABC","DATA","G:\Data\ces 202302.csv.bak",654,14/04/2023 14:00:41 "XYZ","DATA","G:\Data\ces 202303.csv",5770,14/04/2023 14:17:39 "XYZ","DATA","G:\Data\ces 202303.csv.bak",5770,14/04/2023 09:49:28 "DEF","DATA","G:\Data\CES individuele.xlsx",104637,23/03/2023 14:53:38 "DEF","DATA","G:\Data\CES.xlsx",23370,23/03/2023 14:53:19 "DEF","DATA","G:\Data\12GR.csv",539,08/02/2023 15:12:13 ;run;
I would probably import all fields and then use DROP or KEEP statement to get the desired output.
You can "skip" variables by reading them into a dummy (which you drop):
data want;
infile cards delimiter=',';
length dummy $8 first $8 four 8 fifth $30;
input first dummy dummy four fifth;
drop dummy;
cards;
"ABC","DATA","G:\Data\ces 202302.csv",654,14/04/2023 14:17:14
"ABC","DATA","G:\Data\ces 202302.csv.bak",654,14/04/2023 14:00:41
"XYZ","DATA","G:\Data\ces 202303.csv",5770,14/04/2023 14:17:39
"XYZ","DATA","G:\Data\ces 202303.csv.bak",5770,14/04/2023 09:49:28
"DEF","DATA","G:\Data\CES individuele.xlsx",104637,23/03/2023 14:53:38
"DEF","DATA","G:\Data\CES.xlsx",23370,23/03/2023 14:53:19
"DEF","DATA","G:\Data\12GR.csv",539,08/02/2023 15:12:13
;run;
I would suggest reading that fifth column as a datetime value.
data want; infile cards delimiter=','; length dummy $8 first $8 four 8; informat fifth anydtdtm30.; format fifth datetime19.; input first dummy dummy four fifth; drop dummy; cards; "ABC","DATA","G:\Data\ces 202302.csv",654,14/04/2023 14:17:14 "ABC","DATA","G:\Data\ces 202302.csv.bak",654,14/04/2023 14:00:41 "XYZ","DATA","G:\Data\ces 202303.csv",5770,14/04/2023 14:17:39 "XYZ","DATA","G:\Data\ces 202303.csv.bak",5770,14/04/2023 09:49:28 "DEF","DATA","G:\Data\CES individuele.xlsx",104637,23/03/2023 14:53:38 "DEF","DATA","G:\Data\CES.xlsx",23370,23/03/2023 14:53:19 "DEF","DATA","G:\Data\12GR.csv",539,08/02/2023 15:12:13 ;run;
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.