Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Importing and Merging Data from CSV Files using SAS, Study notes of Statistics

This document demonstrates how to import data from csv files into sas, define variables, and merge multiple data sets using the merge statement and proc sql. The example includes reading data from multiple csv files, defining variables, and merging data sets based on common keys.

Typology: Study notes

Pre 2010

Uploaded on 08/19/2009

koofers-user-zyv
koofers-user-zyv 🇺🇸

10 documents

1 / 26

Toggle sidebar

Related documents


Partial preview of the text

Download Importing and Merging Data from CSV Files using SAS and more Study notes Statistics in PDF only on Docsity! Statistical Programming in SAS Bailer Chapter 2 (was Ch. 8) (September 21, 2008; 4:54 p.m.) Constructing a data set for analysis: reading, combining, managing and manipulating data sets 2. Constructing a data set for analysis: reading, combining, managing and manipulating data sets 1. Temporary versus permanent status of data sets – LIBNAME 2. Reading data into a SAS data set 2.1 Reading data directly as part of a program – anyone for datalines? 2.2 Reading data sets that were saved as text – infile can be your friend 2.3 Sometimes variables are in particular columns or in particular formats 2.4 Reading comma-separated values – text files with “,” delimiters 2.5 Reading Excel spreadsheets directly 2.6 Reading SPSS data files – the little (SPSS) engine that could 3. Writing out a file or constructing a simple report 4. Concatenating data sets/adding observations – SET 5. Merging data sets/adding variables – MERGE 6 Database processing with PROC SQL 7. Next steps and a summary Exercises 2.1. Temporary versus permanent status of data sets – LIBNAME Display 2.1: Defining a library and referencing a data set within that library libname myfiles "\\muserver2\users\b\baileraj\public.www\classes\sta402\data"; ods rtf bodytitle; proc means data=myfiles.nitrofen maxdec=1 min q1 median q3 max ; class conc; var total brood1 brood2 brood3; run; ods rtf close; Display 2.2: Concentration-specific five-number summary for brood counts conc N Obs Variable Minimum Lower Quartile Median Upper Quartile Maximum 0 10 total brood1 brood2 brood3 24.0 3.0 10.0 10.0 30.0 5.0 11.0 12.0 32.5 5.5 12.0 15.0 34.0 6.0 14.0 15.0 36.0 6.0 15.0 17.0 1 Statistical Programming in SAS Bailer Lower Upper conc N Obs Variable Minimum Median MaximumQuartile Quartile 80 10 total brood1 brood2 brood3 26.0 3.0 9.0 12.0 29.0 5.0 11.0 14.0 32.5 5.0 12.0 14.5 33.0 6.0 12.0 16.0 36.0 8.0 13.0 18.0 160 10 total brood1 brood2 brood3 23.0 2.0 8.0 10.0 27.0 6.0 10.0 11.0 29.0 6.0 12.0 11.0 30.0 6.0 12.0 12.0 31.0 6.0 13.0 13.0 235 10 total brood1 brood2 brood3 7.0 2.0 0.0 0.0 13.0 4.0 0.0 6.0 16.5 6.0 3.5 6.5 21.0 6.0 10.0 9.0 27.0 7.0 13.0 10.0 310 10 total brood1 brood2 brood3 0.0 0.0 0.0 0.0 5.0 5.0 0.0 0.0 6.0 5.5 0.0 0.0 6.0 6.0 0.0 0.0 15.0 7.0 10.0 0.0 Display 2.3: Example code that generates a temporary data set data junk; do kk = 0 to 10 by 0.01; x = kk; y = 3 + 2*kk + rannor(0); output; end; run; proc plot data=junk; * or equivalently, data=work.junk; plot y*x; run; proc reg data=junk; model y=x; run; 2.2. Reading data into a SAS data set Common starting point for a statistical collaborator or consultant: • meet with a colleague or client who is interested in securing assistance in exploring relationships among a collection of variables, testing for treatment differences, or other really fun stuff. • Critical question: do you have your data in an electronic format? The answer to this question varies across disciplines. Colleagues from the biological and medical sciences and business often use Excel spreadsheets for data entry and to do primitive analyses. 2 Statistical Programming in SAS Bailer ods rtf bodytitle; proc print data=SMSA_subset; var city JanTemp JulyTemp RelHum NOxPot S02Pot NOx; run; ods rtf close; Display 2.7: PROC PRINT output from the correctly read subset of the SMSA observations Obs City JanTemp JulyTemp RelHum NOxPot S02Pot NOx 1 Akron, OH 27 71 59 15 59 15 2 Albany-Schenectady- Troy, NY 23 72 57 10 39 10 3 Allentown, Bethlehem, PA-NJ 29 74 54 6 33 6 4 Atlanta, GA 45 79 56 8 24 8 5 Baltimore, MD 35 77 55 38 206 38 2.2.2 Reading data sets that were saved as text – infile can be your friend /* Notes: 1) Two spaces separate each entry in the input data file. A global replace of tabs with two spaces was performed before saving the text file. 2) The first line contains the names of the variables, and the data begins on the 2nd line of the file. 3) Fort Worth had missing values for POP and INCOME and "." were entered in the data file. 4) Increased LENGTH to 39 to accomodate GREENSBORO-WINSTON-SALEM... */ options nodate nocenter; data SMSA_from_txt; infile "C:\Users\baileraj\Desktop\SMSA-DASL-2space-sep.txt" firstobs=2; length city $ 39; input city & JanTemp JulyTemp RelHum Rain Mortality Education PopDensity pct_NonWhite pct_WC pop pop_per_house income HCPot NOxPot S02Pot NOx; run; ods rtf bodytitle; proc print data=SMSA_from_txt; var city JanTemp JulyTemp RelHum NOxPot S02Pot NOx; run; ods rtf close; Display 2.9: Output from PROC PRINT of the SMSA subset read using infile Obs City JanTemp JulyTemp RelHum NOxPot S02Pot NOx 1 Akron, OH 27 71 59 15 59 15 2 Albany-Schenectady-Troy, NY 23 72 57 10 39 10 5 Statistical Programming in SAS Bailer Obs City JanTemp JulyTemp RelHum NOxPot S02Pot NOx … … … … … … … … 59 York, PA 33 76 54 8 49 8 60 Youngstown-Warren, OH 28 72 58 13 39 13 2.2.3 Sometimes variables are in particular columns or in particular formats data d1; infile 'M:\public.www\classes\sta402\SAS-programs\ch2-dat.txt' firstobs=16 expandtabs missover pad ; input @9 animal 2. @17 conc 3. @25 brood1 2. @33 brood2 2. @41 brood3 2. @49 total 2.; firstobs=16 declares that SAS should ignore the first 15 lines of the data file remaining options - expandtabs missover pad – expands any tab characters to a standard tab spacing of 8 columns, assign missing values to variables that were not defined on the input line (not as critical here as compared to reading free-formatted data with missing values at the end of a line), and pads the datalines to be of the same length. 2.2.4 Reading comma-separated values – text files with “,” delimiters DASL-SMSA-commasep.csv =A copy of the SMSA data set was constructed to have comma-separated values – first row "Akron, OH",27,71,59,36,921.87,11.4,3243,8.8,42.6,660328,3.34,29560,21,15,59,15 DSD (delimiter sensitive data) option in an infile statement is needed for reading such data. Display 2.10: Reading input data from files using commas as delimiters between variable values options nodate nocenter; data SMSA_from_CSV; infile "C:\Users\baileraj\Desktop\DASL-SMSA-commasep.csv" firstobs=2 dsd; length city $ 39; input city & JanTemp JulyTemp RelHum Rain Mortality Education PopDensity pct_NonWhite pct_WC pop pop_per_house income HCPot NOxPot S02Pot NOx; run; ods rtf bodytitle; proc print data=SMSA_from_CSV (firstobs=17 obs=25); var city JanTemp JulyTemp RelHum pop pop_per_house income; run; ods rtf close; Display 2.11: Observations 17 to 25 from the SMSA data file 6 Statistical Programming in SAS Bailer Obs City JanTemp JulyTemp RelHum pop pop_per _house income 17 Dayton-Springfield, OH 30 75 58 942083 3.35 30232 18 Denver, CO 30 73 38 1428836 3.15 39099 19 Detroit, MI 27 74 59 4488072 3.44 33858 20 Flint, MI 24 72 61 450449 3.53 32000 21 Fort Worth, TX 45 85 53 . 3.22 . 22 Grand Rapids, MI 24 72 61 601680 3.37 29915 23 Greensboro-Winston-Salem-High Point, NC 40 77 53 851851 3.45 29450 24 Hartford, CT 27 72 56 715923 3.25 37565 25 Houston, TX 55 84 59 2735766 3.35 39558 2.2.5 Reading Excel spreadsheets directly Display 2.12: Importing an Excel spreadsheet using IMPORT or the Excel engine with a LIBNAME /* Assumes SAS/ACCESS engines are available */ /* IMPORT code produced by the IMPORT WIZARD */ PROC IMPORT OUT= WORK.DASL_FROM_EXCEL2 DATAFILE= "C:\Documents and Settings\baileraj\Desktop\DASL-SMSA.xls" DBMS=EXCEL REPLACE; SHEET="Sheet1$"; GETNAMES=YES; MIXED=NO; SCANTEXT=YES; USEDATE=YES; SCANTIME=YES; RUN; /* ------------------------- via EXCEL engine with LIBNAME */ options nodate; title ; libname spreads excel "C:\Documents and Settings\baileraj\Desktop\DASL-SMSA.xls" header=yes; ods rtf bodytitle; /* list the contents of the spreadsheet that was read */ proc contents data=spreads._all_ varnum; run; /* set contents of the 1st worksheet to SAS data set */ data DASL_from_Libname_Excel_engine; set spreads.'sheet1$'n; run; proc print data=DASL_from_Libname_Excel_engine; 7 Statistical Programming in SAS Bailer Display 2.15: SAS LOG with the echo of the nitrofen variable values ------------------------------------------------------------------------ animal=1 conc=0 brood1=3 brood2=14 brood3=10 total=27 _ERROR_=0 _N_=1 ------------------------------------------------------------------------ animal=2 conc=0 brood1=5 brood2=12 brood3=15 total=32 _ERROR_=0 _N_=2 ------------------------------------------------------------------------ animal=3 conc=0 brood1=6 brood2=11 brood3=17 total=34 _ERROR_=0 _N_=3 ... animal=48 conc=310 brood1=4 brood2=0 brood3=0 total=4 _ERROR_=0 _N_=48 ------------------------------------------------------------------------ animal=49 conc=310 brood1=6 brood2=0 brood3=0 total=6 _ERROR_=0 _N_=49 ------------------------------------------------------------------------ animal=50 conc=310 brood1=5 brood2=0 brood3=0 total=5 _ERROR_=0 _N_=50 Display 2.16: Producing a formatted report with an annotated print out of the nitrofen data libname myfiles "\\muserver2\users\b\baileraj\public.www\classes\sta402\data"; proc sort data=myfiles.nitrofen; by conc; data _NULL_; set myfiles.nitrofen; by conc; file 'C:\Users\baileraj\Desktop\nitrofen-put.txt'; /* Write out header text information for the first observation in each conc*/ if FIRST.conc then do; put 6*'+-----' '+'; put 'Conc = ' conc / @1 'Brood 1' @10 'Brood 2' @20 'Brood 3' @30 'TOTAL' / @1 '-------' @10 '-------' @20 '-------' @30 '-----'; end; /* Write out the data for all records */ put @5 brood1 3. @14 brood2 3. @24 brood3 3. @32 total 3.; data _NULL_; /* add last line to the output file */ file 'C:\Users\baileraj\Desktop\nitrofen-put.txt' MOD; put 6*'+-----' '+' // 'Data from C. dubia Nitrofen exposure data [Bailer & Oris 1993]'; run; Display 2.17: Contents of the nitrofen-put.txt file constructed by PUT +-----+-----+-----+-----+-----+-----+ Conc = 0 Brood 1 Brood 2 Brood 3 TOTAL ------- ------- ------- ----- 3 14 10 27 5 12 15 32 6 11 17 34 6 12 15 33 6 15 15 36 5 14 15 34 6 12 15 33 10 Statistical Programming in SAS Bailer 5 13 12 30 3 10 11 24 6 11 14 31 +-----+-----+-----+-----+-----+-----+ . . . lines deleted . . . +-----+-----+-----+-----+-----+-----+ Conc = 310 Brood 1 Brood 2 Brood 3 TOTAL ------- ------- ------- ----- 6 0 0 6 6 0 0 6 7 0 0 7 0 0 0 0 5 10 0 15 5 0 0 5 6 0 0 6 4 0 0 4 6 0 0 6 5 0 0 5 +-----+-----+-----+-----+-----+-----+ Data from C. dubia Nitrofen exposure data [Bailer & Oris 1993] Display 2.18: Creating external data files containing the contents of a SAS data set libname myfiles "\\muserver2\users\b\baileraj\public.www\classes\sta402\data"; /* create a TEXT file with the nitrofen data */ data _NULL_; set myfiles.nitrofen; file 'C:\Users\baileraj\Desktop\nitrofen-TEXT.txt'; put @1 conc @10 animal @15 brood1 @20 brood2 @25 brood3 @30 total; /* create a CSV file with the nitrofen data */ data _NULL_; set myfiles.nitrofen; file 'C:\Users\baileraj\Desktop\nitrofen-CSV.csv' dsd; put conc animal brood1 brood2 brood3 total; /* create a CSV file with the nitrofen data and a row with variable names */ data _NULL_; file 'C:\Users\baileraj\Desktop\nitrofen-CSV2.csv' dsd; put "conc,animal,brood1,brood2,brood3,total"; data _NULL_; set myfiles.nitrofen; file 'C:\Users\baileraj\Desktop\nitrofen-CSV2.csv' dsd MOD; put conc animal brood1 brood2 brood3 total; run; Display 2.19: First 4 lines from the 3 data files constructed using PUT statements nitrofen-TEXT.txt 0 1 3 14 10 27 0 2 5 12 15 32 0 3 6 11 17 34 0 4 6 12 15 33 11 Statistical Programming in SAS Bailer nitrofen-CSV.csv 0,1,3,14,10,27 0,2,5,12,15,32 0,3,6,11,17,34 0,4,6,12,15,33 nitrofen-CSV2.csv conc,animal,brood1,brood2,brood3,total 0,1,3,14,10,27 0,2,5,12,15,32 0,3,6,11,17,34 2.4 Concatenating data sets/adding observations – SET Display 2.20: Adding observations / "rows" – concatenating data sets Observation ID Variable 1 Variable 2 Variable 3 1 2 3 4 5 6 7 CONCATENATED WITH Observation ID Variable 1 Variable 2 Variable 3 8 9 10 11 12 PRODUCES Observation ID Variable 1 Variable 2 Variable 3 1 2 3 4 5 6 7 8 9 12 Statistical Programming in SAS Bailer PRODUCES … Observation ID Variable 1 Variable 2 Variable 3 Variable 4 Variable 5 1 2 3 4 5 6 7 Display 2.24: Merging using DATA step programming data SMSA_subset_weather; length city $ 27; input city & JanTemp JulyTemp RelHum Rain; datalines; Akron, OH 27 71 59 36 Albany-Schenectady-Troy, NY 23 72 57 35 Baltimore, MD 35 77 55 43 Allentown, Bethlehem, PA-NJ 29 74 54 44 Atlanta, GA 45 79 56 47 ; data SMSA_subset_demog; length city $ 27; input city & Mortality Education PopDensity pct_NonWhite pct_WC pop pop_per_house income; datalines; Akron, OH 921.87 11.4 3243 8.8 42.6 660328 3.34 29560 Albany-Schenectady-Troy, NY 997.87 11.0 4281 3.5 50.7 835880 3.14 31458 Baltimore, MD 1071.29 9.6 6441 24.4 43.7 2199531 3.44 32368 Allentown, Bethlehem, PA-NJ 962.35 9.8 4260 0.8 39.4 635481 3.21 31856 Atlanta, GA 982.29 11.1 3125 27.1 50.2 2138231 3.41 32452 ; data SMSA_subset_pollution; length city $ 27; input city & HCPot NOxPot S02Pot NOx; datalines; Akron, OH 21 15 59 15 Albany-Schenectady-Troy, NY 8 10 39 10 Baltimore, MD 43 38 206 38 Allentown, Bethlehem, PA-NJ 6 6 33 6 Atlanta, GA 18 8 24 8 ; proc sort data=SMSA_subset_weather; by city; run; proc sort data=SMSA_subset_demog; by city; run; proc sort data=SMSA_subset_pollution; by city; run; 15 Statistical Programming in SAS Bailer data all_subset; merge SMSA_subset_weather SMSA_subset_demog SMSA_subset_pollution; by city; ods rtf bodytitle; proc print data=all_subset; var city JanTemp mortality NOx; run; ods rtf close; Display 2.25: Resulting common SMSA data file after the merging Obs city JanTemp Mortality NOx 1 Akron, OH 27 921.87 15 2 Albany-Schenectady-Troy, NY 23 997.87 10 3 Allentown, Bethlehem, PA-NJ 29 962.35 6 4 Atlanta, GA 45 982.29 8 5 Baltimore, MD 35 1071.29 38 2.6 Database processing with PROC SQL The big idea is that PROC SQL looks at data sets as “tables” that can be manipulated, processed and displayed as a result of command queries. The basic syntax, excerpted from the SAS help documents, includes: PROC SQL; CREATE TABLE name; SELECT variables FROM list-of-tables/dataset GROUP BY /* optional */ HAVING /* optional */ ; Display 2.26: Requesting that a simple SQL table be constructed from a SAS data set containing the highest nitrofen concentration data data conc_310; input total @@; conc = 310; * define a variable containing the value of the nitrofen conc.; datalines; 6 6 7 0 15 5 6 4 6 5 ; ods rtf bodytitle; proc sql; select conc,total from conc_310; run; ods rtf close; 16 Statistical Programming in SAS Bailer Display 2.27: Table with the total number of young produced in the highest nitrofen concentration condition conc total 310 6 310 6 310 7 310 0 310 15 310 5 310 6 310 4 310 6 310 5 The real power of PROC SQL begins to surface as you manipulate table relations. For example, we concatentate the 5 nitrofen concentration data sets using a union of tables operation in Display 2.28. In the PROC SQL command, we construct a SAS data set “all_sql” as a result of the line create table all_sql as and select all variables from each data set as part of the select * from conc_0 command (the * is a wildcard representing the selection of all variables. The union option “stacks” the table into a resultant table while order by conc,id; sorts the values by id within conc. Display 2.28: Containing data sets using union of tables in PROC SQL data conc_0; input total @@; conc = 0; * define a variable containing the value of the nitrofen conc.; id=_n_; * define an animal ID corresponding the observation number; datalines; 27 32 34 33 36 34 33 30 24 31 ; data conc_80; input total @@; conc = 80; * define a variable containing the value of the nitrofen conc.; id=_n_; * define an animal ID corresponding the observation number; datalines; 33 33 35 33 36 26 27 31 32 29 data conc_160; input total @@; 17 Statistical Programming in SAS Bailer Obs City JulyTemp Education S02Pot 4 Allentown, Bethlehem, PA-NJ 74 9.8 33 5 Atlanta, GA 79 11.1 24 Display 2.32: Illustrating Left/Right/Full outer joins with a subset of the SMSA observations data SMSA_subset_weather2; length city $ 27; input city & JanTemp JulyTemp RelHum Rain; datalines; Akron, OH 27 71 59 36 Baltimore, MD 35 77 55 43 Allentown, Bethlehem, PA-NJ 29 74 54 44 Atlanta, GA 45 79 56 47 ; data SMSA_subset_demog2; length city $ 27; input city & Mortality Education PopDensity pct_NonWhite pct_WC pop pop_per_house income; datalines; Akron, OH 921.87 11.4 3243 8.8 42.6 660328 3.34 29560 Albany-Schenectady-Troy, NY 997.87 11.0 4281 3.5 50.7 835880 3.14 31458 Baltimore, MD 1071.29 9.6 6441 24.4 43.7 2199531 3.44 32368 Allentown, Bethlehem, PA-NJ 962.35 9.8 4260 0.8 39.4 635481 3.21 31856 ; ods rtf bodytitle; /* inner join / conventional join */ proc sql; title "inner join"; select w.city,JanTemp,JulyTemp,Education,income from SMSA_subset_weather2 as w,SMSA_subset_demog2 as d where w.city=d.city; /* LEFT outer join - with duplicate columns */ proc sql; title "LEFT outer join with duplicate columns"; select * from SMSA_subset_weather2 as w left join SMSA_subset_demog2 as d on w.city=d.city; /* LEFT outer join - eliminating duplicate columns using COALESCE */ proc sql; title "LEFT outer join eliminating duplicate columns"; select coalesce(w.city, d.city),JanTemp,JulyTemp,Education,income from SMSA_subset_weather2 as w left join SMSA_subset_demog2 as d on w.city=d.city; 20 Statistical Programming in SAS Bailer /* RIGHT outer join */ proc sql; title "RIGHT outer join"; select coalesce(w.city, d.city),JanTemp,JulyTemp,Education,income from SMSA_subset_weather2 as w right join SMSA_subset_demog2 as d on w.city=d.city; /* FULL outer join */ proc sql; title "FULL outer join"; select coalesce(w.city, d.city),JanTemp,JulyTemp,Education,income from SMSA_subset_weather2 as w full join SMSA_subset_demog2 as d on w.city=d.city; ods rtf close; Display 2.33: Results from inner and left/right/full outer joins inner join City JanTemp JulyTemp Education Income Akron, OH 27 71 11.4 29560 Baltimore, MD 35 77 9.6 32368 Allentown, Bethlehem, PA-NJ 29 74 9.8 31856 LEFT outer join with duplicate columns (edited with particular columns deleted) City JanTemp JulyTemp Rain city Mortality Education income Akron, OH 27 71 36 Akron, OH 921.87 11.4 29560 Allentown, Bethlehem, PA-NJ 29 74 44 Allentown, Bethlehem, PA-NJ 962.35 9.8 31856 Atlanta, GA 45 79 47 . . . Baltimore, MD 35 77 43 Baltimore, MD 1071.29 9.6 32368 LEFT outer join eliminating duplicate columns 21 Statistical Programming in SAS Bailer JanTemp JulyTemp Education income Akron, OH 27 71 11.4 29560 Allentown, Bethlehem, PA-NJ 29 74 9.8 31856 Atlanta, GA 45 79 . . Baltimore, MD 35 77 9.6 32368 RIGHT outer join JanTemp JulyTemp Education income Akron, OH 27 71 11.4 29560 Albany-Schenectady-Troy, NY . . 11 31458 Allentown, Bethlehem, PA-NJ 29 74 9.8 31856 Baltimore, MD 35 77 9.6 32368 FULL outer join JanTemp JulyTemp Education income Akron, OH 27 71 11.4 29560 Albany-Schenectady-Troy, NY . . 11 31458 Allentown, Bethlehem, PA-NJ 29 74 9.8 31856 Atlanta, GA 45 79 . . Baltimore, MD 35 77 9.6 32368 Display 2.34: Constructing the sample space based on tossing a coin and rolling a die. data coin_toss; toss="Heads"; output; toss="Tails"; output; data die_roll; face=1; output; face=2; output; face=3; output; face=4; output; face=5; output; face=6; output; proc sql; create table roll_n_toss as select * from coin_toss,die_roll; ods rtf bodytitle; 22 Statistical Programming in SAS Bailer 3.66 Co2 2. Fifty animals were exposed to one of 5 concentration levels of nitrofen (10 animals per group but some observations may be missing in the data below). The data were recorded separately for three broods. Produce a combined data set containing observations that have data on all 3 broods. In addition, construct an additional variable corresponding to the total number of young produced in all three broods. Compare different joins for these data. Print out the results for the different combined data sets. Note that multiple observations are given on each line. Brood=1 data Variables: ID conc number of young 3 0 6 4 0 6 5 0 6 6 0 5 7 0 6 8 0 5 9 0 3 10 0 6 12 80 5 13 80 6 14 80 5 15 80 8 16 80 3 17 80 5 18 80 7 19 80 5 20 80 3 21 160 6 22 160 6 23 160 2 24 160 6 25 160 6 26 160 6 27 160 6 28 160 5 30 160 6 31 235 4 32 235 6 34 235 6 35 235 6 36 235 6 37 235 7 38 235 4 39 235 6 40 235 7 41 310 6 42 310 6 43 310 7 44 310 0 45 310 5 47 310 6 48 310 4 49 310 6 50 310 5 Brood=2 data Variables: ID conc number of young 1 0 14 2 0 12 3 0 11 4 0 12 6 0 14 7 0 12 8 0 13 9 0 10 10 0 11 11 80 11 13 80 11 14 80 12 15 80 13 16 80 9 17 80 9 18 80 12 19 80 13 20 80 12 21 160 12 22 160 12 23 160 8 24 160 10 25 160 11 26 160 13 27 160 12 29 160 13 30 160 12 31 235 13 32 235 10 33 235 5 34 235 0 35 235 13 36 235 0 37 235 0 38 235 2 39 235 8 40 235 0 41 310 0 42 310 0 43 310 0 45 310 10 46 310 0 47 310 0 48 310 0 49 310 0 50 310 0 Brood=3 data Variables: ID conc number of young 1 0 10 2 0 15 3 0 17 4 0 15 5 0 15 6 0 15 7 0 15 8 0 12 10 0 14 25 Statistical Programming in SAS Bailer 26 11 80 16 12 80 16 13 80 18 14 80 16 15 80 15 16 80 14 17 80 13 18 80 12 19 80 14 20 80 14 21 160 11 22 160 11 23 160 13 24 160 11 25 160 13 26 160 12 27 160 12 28 160 11 29 160 10 30 160 11 31 235 6 32 235 5 33 235 0 34 235 6 35 235 8 36 235 10 38 235 9 39 235 7 40 235 10 41 310 0 42 310 0 43 310 0 44 310 0 45 310 0 46 310 0 48 310 0 49 310 0 50 310 0
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved