编程data步程序简介_第1页
编程data步程序简介_第2页
编程data步程序简介_第3页
编程data步程序简介_第4页
编程data步程序简介_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、建立数据集data MM;input a $ b c;m=b+c;n+1;/*直接声明一个变量n,数据为累加型定义时不需要等号*/label m=results;cards;aa 1 2bb 3 4 cc 5 6 ;run;proc sort data=MM;/*如果前面使用了rename语句对变量名重新进行了赋值的话,在排序时须使用新的变量名多级排序先总后分,与sql中相同*/by descending m ;run;proc print data=MM;var _numeric_;var _character_;titlechulijieg;run;注意:整体步骤为先生成数据集,然后再

2、排序;最后输出结果;Var之后要有空格;排序时,by desecending m;必须用变量名m,不可用 标签result;A为字符串时,需在后面加符号$,不规定字节数的话不用加点;数据输入时,每个对象须单独起一行;数据输入结束时,分号必须另起一行;下划线的输入:减号;若 var numeric 在先,则输出时数字列在前;若character在先,则输出时字符列在先;2、生成空数据集data t2;length name $8. percent 8.;/*定义两个变量name、perceng的类型、长度,各参数均不可省略*/stop;/*没有stop的话会生成缺省变量*/run;2 用infi

3、le语句导入外部数据 data graph1; infile e:number.txt delimiter=09x;/*数据以txt文档存储,位置为e:number.txt直接从excel中黏贴至文本文档,分隔符为制表符制表符的表示方法为 09x */ input a b c d; /*因前面已经指明分隔符为制表符,且变量皆为数值型,故虽未再进一步说明,程序仍会自动以分隔符分割变量*/ run; proc print; run;linesize 语句:指定行长度,可突破262字节的限制2、读取指定位置的文件在e盘建立文件夹ee,其中一份sas数据集名为data1.读取data1 的程序为lib

4、name tt1 e:ee;/*将文件及ee的路径指定为 tt1*/data a;set tt1.data1;/*复制 路径tt1下名为 data1的数据集*/run;若要获取data1 的头文件:不平衡分组数据的读入data a;do j=1 to 2;input n;do i = 1 to n;input x y ;output;end;end;drop n i;cards;8/*必须换行,程序读数据8之后,转向执行do i语句,再次读取数据时指针会自动跳转至下一行*/1 11 2 22 3 33 4 44 5 55 6 66 7 77 8 8851 51 2 52 3 53 4 54 5

5、 55;run;3 delimiter 定义分隔符data new1; infile cards delimiter=,;/*定义逗号为分隔符注意。 Infile cards语句需放在下面的 input变量语句之前*/ input x y z; /*输入至一行介绍时会自动结束。转至下一行,但若定义了字符型变量长度的话则不会开始下一变量输入,而是将下一行数据继续认为是未输入完的变量的一部分*/ cards;1,2,34,5,6;data new2; infile cards dlm=ab; /*a b的所有组合形式均将被认为是分隔符*/input x y z;cards;1aa2ab34bb5b

6、a67a8b9;run;proc print data=new1;run;proc print data=new2;run;3.永久存储变量libname number e:;/*首先指定物理路径*/data number.first/*命名时物理路径在前*/(drop=blabel=analysisrename=(a=location b=time c=proct d=wanted);/*drop语句在先,则变量b不会进入数据集,对b进行的命名等操作也不会进行*/infile e:number.txt delimiter=09x;input a b c d;run;proc sort dat

7、a=number.first;by descending location;/*a变量名称已改为location*/run;proc print;run;4 将数据拆分为多列data a; input type $ ;/*表示下面的操作均在这一行进行*/ if type=c then input course $ prof $;/*then 后面需用 input命令*/ else if type=s then input name $ id 3.2; cards; c math zxs s zhao 58888 ; proc print; run;5 读取指定数据Data a; input 1

8、 x 5.2 6 y 2.1 +2 z #2 xx;/*1置于变量前,表示从第一列开始读*/*5.2 共占五位,小数点后占两位*/*+2置于变量前,表示向后跳两列读取。注意,是在将要读取的列上向后跳,而不是以已读完的列为基点向后跳*/*#2 从第二行开始读取*/ cards;234;proc print;run;6 dsd : & 字符输入data topics9; infile datalines dsd;/* dsd 将引号内的内容作为一个字符串整体(不再输出引号,缺省的话引号内的部分将可能被拆开),默认逗号为分隔符(可通过 delimiter= 语句修改分隔符类型),若遇见相邻的分隔符,

9、则认为中间有一缺省值在设置输出格式时,若变量内包含逗号,则使用双引号将该变量包围,以避免与分隔符混淆没有的情况下,认为换行也是分隔符 */ input speaker : $25. title $40. location & $10.;/*: 第一次遇见分隔符时即认为该变量输入结束*/* 允许输入值中保留引号,遇见引号右侧的第一个分隔符即认为该变量输入结束1、 若变量自左引号开始读取,至右引号位置发现分隔符,但仍不足规定位数时,则自动认为该变量输入结束;2、若至右引号处未发现分隔符,且仍有字符,则继续读取,直至发现分隔符或读取了规定长度的字符;3、若已读取了规定位数,但仍未发现右引号及分隔符,

10、则自动结束该变量读取,余下的内容及右引号、右引号右侧与分隔符之间的内容都将不被输入,指针直接跳至右引号右侧的第一个分隔符处。若向右一直未发现分隔符,指针将一直跳至换行符处4、没有dsd的话,若使用,则引号内的空格(分隔符)也将导致变量输入结束,因为引号内的部分在没有dsd的情况下不被认为是一个字符串整体*/*& 允许字符变量中有空格,或某变量全为空格。此为默认选项& : 同时有& :时,位置在前的&生效,:不再起作用*/*定义字符型变量长度时,$与表示长度的数字和点必须连接在一起,不能有空格*/*既没有 dsd也不规定字符长度的话,系统一直寻找至数据再开始读取,不计算其中有多少分隔符 既没有:

11、也没有的话,程序优先考虑按照字节长度划分变量,而非分隔符规定了字符长度时,读取字符之后读取相邻的数字数据时仍不受分隔符个数影响,但读取字符数据时受其影响*/ datalines;/*datelines 与cards通用*/ Whitfield,Looking at Lift,Blue Room Puentes,Red Room Townsend,Peace in Our Times,Green Room ; proc print ; run;方法2data b;infile datalines delimiter=,;input x1 $ x2 $30. x3 &$15.;cards;Whit

12、field,Looking at Lift,Blue RoomPuentes,Red RoomTownsend,Peace in Our Times,Green Room;run;使用空格作为分隔符data b;infile datalines dsd delimiter= ;input x1 :$10. x2 $30. x3 $15.;/*没有dsd的话,若使用,则引号内的空格(分隔符)也将导致变量输入结束,因为引号内的部分在没有dsd的情况下不被认为是一个字符串整体*/cards;Whitfield Looking at Lift Blue RoomPuentes Red RoomTown

13、send Peace in Our Times Green Room;run;proc print;run;另例data a;infile cards dsd delimiter=;/*需定义分隔符且直接输入数据时,在input语句前需使用infile cards语句*/* dsd :分隔符后直接换行将被认为是出现一个缺省值*/*数据直接黏贴在sas中时,excel的制表符应先替换为空格,否则第二变量仅含有一个字符时易出错*/input a b $50. ;/*因为空格为分隔符,是否在input语句中使用&,可参考运行结果确定 */cards;1119- 1-25112- 11 -319, 5

14、0- 11; run;proc print;run;定长、含分隔符数据的读入(:的作用)data a;input (x1-x5) ($1.);cards;ab/cdefgh/ig/k;run;data _null_;file e:ooo.txt delimiter=?;set a;put x1-x5 ;run;data a2;infile e:ooo.txt delimiter=?;input x1 :$1. x2 :$1. x3 :$1. x4 :$1. x5 :$1. ;/* 指定分隔符及长度时,需有:,否则分隔符会被认为是字符而读取至结果中。本例中,读取第一个变量a后,字节长度被满足,程

15、序将自动认为第二个变量的读取开始,在没有:的情况下,字节长度被满足前任何内容(包括分隔符)都将被认为是要输入的内容*/run;7 多次重复输入文本data;file print; /*file print;*/ /* change the output window*/ put 1230*SAS;/*1230*文本 将 文本 输入1230次 */ run; proc print ; run;8 显示控制data put;file print; input x y; z=x+y; put _infile_;/*每次运行均显示输入的数值 */ put _all_;/*所有变量、内置变量*/ car

16、ds;10 20100 2001000 2000;run;data put;file print; input x y; z=x+y; put _infile_;/*每运行一次,即将下列值显示一次*/ put _N_;/*显示已经运行的次数put _page_ 意为在新窗口中输出;*/ cards;10 20100 2001000 2000;run;9 set语句合并数据集data a; input id ming $ sex $ ; cards; 1 MARY F 3 ANN F 4 TOM M ;/*生成数据集a*/data b; input id name $ sex $ ; cards

17、; 2 JOSE F 5 ERIE M 6 MAY F 1 MARY M; /*生成数据集b*/data result; set a(rename=(ming=name) in=a) b(in=inb);/*同时复制a、b,注意,a、b的数据结构、类型均相同 进行逻辑判断,数值是否存在于b数据集中 Set语句后分号断开*/ by id; if inb=1 then bonus=500;/*如果是的话,那么变量bonus的值为500,否则为空*/run;proc print; title;run;10 选择复制数据程序1有问题data zxs; do n=2 to total;/* do语句*/

18、 set sasuser.flow point=n nobs=total;/*point=开始位置Nobs=结束位置Obs=结束位置 */ /*if _error_=1 then abort;*/ output; end; stop; run;PROC PRINT data=zxs;RUN;data d3;do n = 3 to 6;set d2 point=n;time+1;drop _NAME_;output;end;stop;/* stop可防止程序进入死循环*/run;data a;input x;cards;123456;run;data b;do i=5 to 6; set a p

19、oint=i;output;end;stop;run;11 merge语句合并数据集data person; input name $ sex $; cards;MARY FJNN FTOM M ;data place; input name $ city $ region; cards;MARY MIAMI 2JNN TAMPA 6JOSE ERIE 5MARY TAMPA 7; /*proc sort data=person; by name;proc sort data=place; by name;进行排列前需先进行排序*/data result; merge person place

20、;/* 全部姓名均会出现,最好是一对一合并*/ by name;proc print; titleDATA SET RESULT;run;示例data a;input x y $;cards;1 a2 b3 d4 f;run;data b;input x z;cards;1 23 456 788 90;run;data c;merge a b;by x;run;12 updata 升级数据集data c; update a b;/*以数据集b中的值覆盖a中的值*/ by id ;/*以id为共同字段进行修改注意,每行的id字段必须是唯一的,不可两行相同且所有的id均会出现*/run;示例dat

21、a a;input x y $;cards;1 a2 b3 d4 f;run;data b;input x y $;cards;1 23 456 788 90;run;data c;update a b;by x;run;13 以dsd进行分隔data new2; infile cards dlm=ab;/*以a、b的各种组合均被识别为分隔符*/input x y z;cards;1aa2ab34bb5ba67a8b9;run;14 missover/flowover/truncover/stopover处理数据行末尾Infile datalines misover;数据行末尾位数不足规定位数

22、时作为缺省值处理Infile datalines truncover;数据行末尾位数不足规定位数时直接读入Infile flowover;数据行末尾位数不足规定位数时读入下一条记录Infile cards stopover;报告出错,中止数据读取15 pad lreclInfile 物理路径 pad;源数据文件行宽度不够时,在最后以空格补齐16 deletedata jn; input a b c; file print; put _n_; if a3 then delete;/*如果a3,则停止当前观测,回到DATA步开头开始处理下一个观测值*/ *put _n_; *total=a+b;

23、cards;1 2 33 3 25 3 13 3 3;proc print;run;17 lostcard语句处理缺失变量data ins; input id 1-3 reject 8-10 #2 idc 1-3 pass; if id ne idc then lostcard;/*如果id与idc不相等的话,自动处理下一个两行相等的数据若使用delete语句的话,则所涉及的两行数据都会被删除,并可能导致整个程序无法运行所以设计行数据要合并在一行是应选用lostcard语句若使用Delete语句,则程序读入411 46,然后在数据集中删除这一行的四个数据,再从第二个411处(411 99551

24、)向下运行,搜寻下一个411。Lostcard语句中,指针在400数据运行时,搜寻完源数据中的下一行(411 46),发现与400不相等时,删除数据集中的400行,指针会停留在原数据中的这个411处(411 46),将其读入一个新的数据行,并搜寻下一个411*/cards;301 32301 61432302 53302 83171400 92845411 46411 99551;proc print; title ;run;三行数据的情况data ins; input id 1-3 reject 8-10 #2 idc 1-3 pass #3 mnp 1-3; if id ne idc or

25、 idc ne mnp or id ne mnp then lostcard; /*delete input*/cards;301 32301 61432301 53302 83171302 83172411 92845411 46411 99551;proc print; title ;run;18 where语句进行条件运行data aa; set sasuser.business; where employs50; *where industry=Food; *where employs between 50 and 70;/*是否在50-70之间*/ *where employs in

26、 (61,62);/*是否为61,62这两个数据中的一个*/ *where employs is missing; *where industry ? Ele; /* ? means contains*/ *where industry like %t%; /* % can substitute many char 代表任意字符,整个语句意为包含字母t*/ *where industry like O_l; /* _ can substitute one char _代表一个字符*/run;proc print;run;示例data a;input x1 $;cards;aaartyytyyr

27、ooiprbip;run;data b;set a;where x1 ? t;/* ? 表示包含*/run;data c;set a;where x1 like %a%;run;data d;set a;where x1 like %r_i%;run;data e;set a;where x1 like %r_i%;/*每个横线代表一个字符*/run;多个条件data a;do i= 1 to 10;output;end;run;data b;set a;wherei gt 2 and i lt 4;run;字符型data a;input x1 $;cards;abcsdabcabcmdabc

28、mmmsdacoabcsdacossfddg;run;data b;set a;wherex1 like %a_c%;run;data c;set a;wherex1 like %a_c% and x1 like %s_c%;run;19 do 循环语句data a;input x ; do i=1 to 4; y=4*x; output;end;/*每读入一个变量,则将do与end之间的语句循环四次不加0utput语句的话则只输出最后一次运行后的y值,其余不显示*/ cards; 11 22 33 44 55 66 ; run;proc print;run;20 output 语句进行输出D

29、ata步每次迭代时,后台自动进行output,但若主动加上output语句,则取消自动输出,变为仅在条件下输出。data;file print;input a b;if a=1 then output;/*仅当a=1时将结果输出Output语句亦可单独使用,见下例*/cards;2 31 52 41 6;run;proc print;run;21 output 结果输出在几个数据集中data year81 year82 year83;/*同时创建3个数据集*/ input year x1-x2; if year=1981 then output year81; else if year=198

30、2 then output year82; else if year=1983 then output year83;/*数据集year83的前面不需要 data */ cards;1981 1 21982 2 31983 3 4;run;proc print;run;22 Output 将一行变量拆分为多行data repeat; input subject $ meal1-meal3; /*此处亦可 drop=meal1-meal3;意为不输出这三个变量的值*/ mea=meal1;output; /*定义一个变量mea,其值等于meal1,输出此行关键是output导致了本行的输出,并最

31、终使本行被输出了三次*/ mea=meal2;output; mea=meal3;output; cards;a 2 5 4b 3 6 2;proc print;run;23 output 将多行数据运算为一行(见24)24 Set 语句进行分组分别运算data subtotal; set pay; by area;/*产生每组的首末识别*/ if first.area then total=0;/*在后台声明一个参数total,初始值为0,并迭代保存若使用input 语句声明了变量,则每次运行都从初始声明的值开始,不进行迭代保存*/ total+amount;/*if语句以分号结束后,其下面

32、的语句的执行与if无关,即每读入一行数据都将执行注意,自身迭代赋值变量的语法不需要等号*/ drop amount; if last.area then output;/*仅在组结束行输出运算结果,故将实现了多行运算的为一行 */run;proc print;run;24 call语句调用函数data b; seed3=161321804; seed4=936674311; do i=1 to 5; call ranuni(seed3,x3);/*X3 意为结果识别为变量X3 */x4=ranuni(seed4);/*效果同 call rannui(seed4, x4) */ output;

33、end;run;25 do while data while; n=0; do while (n=4);/*n=4时也不再执行 即边界即停止即使条件为n=0,程序也会完整运行一次*/ file print; put n=;n+1; end;run;27 do exit 规定结束标准的do语句data a;input x;exit=5;/*5次即结束*/y=0;i=1;do i=1 to exit;y+x;if y=5 then i=exit;/*y大于等于5即结束*/output;end;cards;123;run;proc print;run;27 select(when) 条件运行data

34、 old; input grade $ ; cards;A B1 B2 B3 C D;run;data new; set old ; x=1000; select(grade); when(A) salary=x*1.5; when(B1,B2,B3) salary=x*1.3;/*多个时以逗号分隔*/ when(C) salary=x*1.1; otherwise salary=x;end;run;PROC PRINT;RUN;28 if语句 条件执行(条件为表达式)data;input x ;if x=1 then y=x;else if x=2 then y=2*x;/*其他情况时,须用

35、else if,其中的if不可省略或用 otherwise*/else if x ne 1|x ne 2 then y=x*10;/*|表示 or 即或者的意思/cards;1 2 3 4 5 6 7 8;proc print;run;29 if语句条件执行(条件为变量,处理缺失、0值情况)data aa; input x ; if x then y=x;/*如果x的值缺失或为0时则不运行*/ cards;1 0 . 4;run;proc print;run;30 return语句 输出并返回data survey; input x y z; if x=y then return;/*输出目前

36、已有的结果,并返回data步的开头,执行下一行变量*/ x=y+z ; a=x*2; cards;1 1 32 3 3;/*每个data步的结尾都隐含一个return语句*/proc print;run;31 goto 跳转语句data info; input x ; file print; if 1=x=5 then goto ok; /*goto后必须跟标签,且标签必须也在这一data步中*/ put x;/*此句与if无关 */ count+1;/*此句与if无关 */ ok:y+x;/*ok为与goto对应的标签当不执行goto语句时,ok后的语句也将被执行 即ok语句的执行与goto

37、无关 */ cards; 7 2 16 5 323 1 11 ;proc print;run;32 link 跳转用于if语句下层还需进一步分类执行的情况data; input type $ wd station $ ;elev=.;if type=ALUV then link calcu;/*calcu为标签*/year=1985;return;/*整个程序的结束,不可缺少,否则继续向下运行 */calcu: if station=SITE_1 then elev=6650-wd;if station=SITE_2 then elev=5500-wd;return;/*calcu步运行至 r

38、eturn时结束,但并不跳转至data步开头,而是跳转至link语句后的程序并开始运行*/cards;ALUV 523 SITE_1UPPA 234 SITE_2ALUY 666 SITE_2;proc print;run;33 continue 停止当前数据行,进行下一循环s34 leave 停止循环,返回主程序data week; input name $ idno start; bonus=0; do year=start to 1991; if bonus ge 500 then leave; /*中止循环时将输出后台保留的最后一次成功运行所得到的bonus值*/ bonus+50;e

39、nd;cards;Jones 9011 1990 Thomas 876 1976 Barnes 7899 1991 Harrell 1250 1975 Richards 1002 1990 Kelly 85 1981 Stone 091 1990 ;PROC PRINT;RUN;35 do(do) 嵌套的do语句data; capital=1; /*每次总循环开始时的初始值须最先赋值给定,即使是0也须定义,不可缺省*/ do year=1 to 2; capital+1; do month=1 to 2;interest=capital+1;capital+interest;end; end;

40、 run; /*1.1:capital:4000 interest:25 total=4025 1.2:capital:4025 interest:25.15 total=4050.15 2.1:capital:6050.15 interest:37.81 total=6087.81 2.2:capital:6087.81 interest:38.04 total=6126*/ proc print; run;运行结果为51,所有结果均记录在日志中,只输出最后一次的计算结果36 嵌套的do select语句data; file print; do mon=JAN,FEB,MAR,APR,MAY

41、,JUN,JUL,AUG,SEP; select ; when(mon=MAR|mon=APR|mon=MAY)put springmon=; when(mon=JUN|mon=JUL|mon=AUG)put summermon=; otherwise put fallmon=; end;end;run;37 array语句定义数组数组内元素属性必须一致,即全为数值或全为文本通过数组运算可实现同一行内的迭代运算data; array x3 a b c (1 2 3); /*array 名称 变量个数说明 变量列表 变量初始值定义数组变量用大括号*/ file print; put x1= x2

42、= x3=; run;data; array x2,3 aa bb cc dd ee ff(1 2 3 4 5 6);/*两行三列*/ file print; put x2,1=; run;data; array x2 $ aaa bbb(data process);/*文本型,需$符号,初始变量列表中需要用引号。空格为分隔符*/ file print; put x2=; run;data; array x6:9,0:9 x60-x99; /*6、7、8、9,共四行 0-9,共10列*/ file print; put x7,0;/*行号为7,列号为0的元素,即第二行第一个*/ run;实例d

43、ata a;input x1-x15 ;cards;1 2 3 4 5 6 7 8 9 11 12 13 21 22 23;run;data b;set a;array mm1:5,1:3 x1-x15;file print;put mm5,2;run;/*数据需在一行,仅仅是绑定名称,并不影响数据在表中的排列-仍为一行,与表a相同*/38 dim 函数计算数组元素个数用于横向迭代data zz; input d1-d7; array day(*) d1-d7;/*通过变量个数确定数组下标。本例中为7*/ do i=1 to dim(day); day(i)=day(i)+10; end; d

44、rop i; cards;99 11 22 222 22 3 44 1 2 3 4 5 6 7;run;PROC PRINT;RUN;39 Array 数组名称(变量个数)_temporary_临时数组data a;input var1 var2 var3;cards; 10 20 30100 . 300. 40 400;run;data b(drop=i);set a;array array1(3) _TEMPORARY_ (.1 .2 .3) /*三个元素,0.1,0.2,0.3,空格为分隔符*/;array array2(3) var1 var2 var3;/*三个变量,var1-var

45、3,与array1同*/ do i=1 to 3; if array2(i)=. then array2(i)=array1(i);/*i位于元素名称位置*/ end;proc print;run;另例 3.2横向迭代运算示例data a;input x1-x5;cards;1 2 3 4 52 3 4 5 64 5 6 7 8;run;data b;set a;array test(5) x1-x5;prod=0;do i=1 to dim(test)-1; if i=1 then prod=test(i); prod=prod*test(i+1);end;/*分行运行,运行完一行及输出*/

46、proc print;run;另例 3.3 关于空白文本元素的替代data a;input (x1-x3) ($);cards;a b cd . f. h i;/*输入数据时,空白文本元素也用点表示*/run;data b;set a;array n(3)$ _temporary_ (m m m);/*文本元素需用引号*/array test(3)$ x1-x3;do i=1 to 3;if test(i)= then test(i)= n(i);/*if语句中,空白字符数据用表示*/end;run;proc print;run;40 array 隐含变量数量数组data test; inpu

47、t sco1-sco5; array s sco1-sco5;/*定义数组变量 s 时未列出下标,则自动默认 _i_为下标变量,且_i_值为变量元素个数*/ do _i_ =1 to 5;s=s*100;/*_i_含义与一般意义的i相同,代表数组元素个数对s操作,s有明确定义,为数值中所对应元素,非迭代产生*/ end; cards; 0.95 0.88 0.57 0.90 0.65 1 2 3 4 5 ; run;PROC PRINT;RUN;41 do over 对隐含下标数组的do重复操作data test; input sc01-sc05; array s sc01-sc05; do

48、over s;/*同 do I = 1 to k,k为数组元素数量即对所有数组元素均执行该操作*/ s=s*100;end;cards;0.95 0.88 0.57 0.90 0.651 2 3 4 5;PROC PRINT;RUN;42 informat语句 定义读取时数据格式(缺省时)data infex; informat default=3.1 default=$char4. x1 2.2;/*informat语句规定了数据格式通用规定,除x1的格式在程序中做了专门说明外,其他均为缺省。此时自动执行informat语句中的规定对于w.d型的数据格式,程序执行时会自动忽略代表总位数的 w,只保证小数点后的位数*/ input x1-x5 name $; file print; put x1-x5 name; cards;111

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论