I have many txt documents that are the output of STUIRT software.
I need to create a SAS program to reliably import the tables from these txt files.
Does anyone familiar with STUIRT output have any suggestions?
Can you at least show an example of one? Copy from the text and paste into a code box opened on the forum with the </> icon or attach an example.
/****************************************************************/ /* STUIRT */ /* A Computer Program for Scale Transformation under */ /* Unidimensional Item Response Theory Models */ /* Version 1.0 */ /* */ /* Seonghoon Kim and Michael J. Kolen */ /* */ /* Iowa Testing Programs */ /* University of Iowa */ /****************************************************************/ THE FOLLOWINGS WERE READ FROM THE INPUT FILE: < Test_2.stu > OK 55 66 Z9 2 MC 3.40100 3.40100 0.5502 4.0322 67 Z9 2 MC 3.40100 3.40100 0.6070 4.0322 68 Z9 2 MC 3.40100 3.40100 0.8946 4.0322 69 Z9 2 MC 3.40100 3.40100 -2.4236 4.0322 70 Z9 2 MC 3.40100 3.40100 0.2261 4.0322 SK 91 66 Z9 2 MC 3.40100 3.40100 0.6690 4.0322 67 Z9 2 MC 3.40100 3.40100 0.3567 4.0322 68 Z9 2 MC 3.40100 3.40100 0.0184 4.0322 69 Z9 2 MC 3.40100 3.40100 -1.2204 4.0322 70 Z9 2 MC 3.40100 3.40100 0.9993 4.0322 CI 55 BK OP ND 41 SN 4.0322 3.40100 4.0000 OD 41 SN 4.0322 3.40100 4.0000 KO SL BY ===[OPTIONS AND DEFAULTS]=== 1. ST: [DEFAULT] slope = 6, intercept = 5 2. IT: [DEFAULT] maximum number of iterations =15 3. OD: number of theta values = 5 ** OLD FORM: THETA VALUES AND WEIGHTS] ** #0001: -8.10484E+000 1.58347E-005 #0002: -6.94837E+000 3.14155E-005 #0003: -7.38954E+000 2.01854E-006 #0004: -9.48437E+000 5.48388E-006 #0005: -7.38474E+000 3.84373E-006 4. ND: number of theta values = 5 ** NEW FORM: THETA VALUES AND WEIGHTS] ** #0001: -8.10484E+000 1.58347E-005 #0002: -6.94837E+000 3.14155E-005 #0003: -7.38954E+000 2.01854E-006 #0004: -9.48437E+000 5.48388E-006 #0005: -7.38474E+000 3.84373E-006 5. FS: [DEFAULT] HAEBARA METHOD: do standardize loss functions STOCKING & LORD METHOD: do standardize loss functions 6. SY: [DEFAULT] HAEBARA METHOD: bidirection (f1 and f2) STOCKING & LORD METHOD: bidirection (f1 and f2) 7. LM: [DEFAULT] NONE 8. OP: ** This option works here. * 9. KO: The Stocking-Lord method is applied to obtain a common scale. Input files for Kolen's POLYEQUATE are provided. ===[Summary Statistics by Model]=== The three-parameter logistic (3PL) model: Attempt1 Attempt2 -------------------------- -------------------------- a_j b_j c_j a_j b_j c_j N.Obs. 10 10 10 10 10 10 Mean 6.77700 -7.6336 2.0345 2.57800 -9.1536 3.0322 Std.Dev. 4.0322 0.54568 4.0322 4.0322 0.9232 4.0322 ===[Solutions for Moment Methods]=== *** When including the NR and/or MC models, Attempt1 Attempt2 ---------------- ---------------- a_jk b_jk a_jk b_jk N.Obs. 10 10 10 10 Mean 3.40100 -6.5384 3.40100 -0.1536 Std.Dev. 4.0322 0.00011 4.0322 00003 Method Slope Intercept ------------------------------------ Mean/Mean 2.8375903 -3.333333 Mean/Sigma 4.847654 -1.111139 *** When excluding the NR and/or MC models, Attempt1 Attempt2 ---------------- ---------------- a_jk b_jk a_jk b_jk N.Obs. 10 10 10 10 Mean 3.40100 -6.5384 3.40100 -0.1536 Std.Dev. 4.0322 0.00011 4.0322 00003 Method Slope Intercept ------------------------------------ Mean/Mean 2.8375903 -3.333333 Mean/Sigma 4.847654 -1.111139 ===[First Solutions for Characteristic Curve Methods]=== Numb. Meth. 1st.S 1st.I Slope Intercept Iter# TermC Grad.S Grad.I Func.V 0000 HA 1.0 0.0 0.000087 -2.843657 2 1 -9.736328 4.032200 4.2847810 SL 1.0 0.0 2.897536 -18352874 3 1 -3.184737 4.032200 0.670331 ===[Final Summary of Solutions by Method]=== Method Slope Intercept ------------------------------------ Mean/Mean 5.5555999 -1.5839547 Mean/Sigma 4.443838 -2.863526 Haebara 3.141414 -1.987654 Stocking-Lord 3.847377 -9.999999
As the documents in question contain confidential data, I manually changed the values. There is quite a bit more to the document that would take too much time to anonymize.
But I need a code that can pull out the tables and data, but ignore the header and options.
My first thought was that if i could get the code to scan the document for a certain string. (i.e. ** OLD FORM: THETA VALUES AND WEIGHTS] **, or ===[Solutions for Moment Methods]===) and then import the following table. Since the documents should all follow that similar layout and format.
Any help greatly appreciated. I'm quite stumped at the moment.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.