SS编程技术数据步修改与选择观测_第1页
SS编程技术数据步修改与选择观测_第2页
SS编程技术数据步修改与选择观测_第3页
SS编程技术数据步修改与选择观测_第4页
SS编程技术数据步修改与选择观测_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

n第7章数据步修改与选择观测n清华大学经管学院朱世武nZhushw@

nResdat样本数据:

nSAS论坛:n本章介绍数据步中用于修改与选择观测的语句。n利用修改与选择观测语句,可以进行数值计算、数据集修改、观测子集选择及输出控制等。。赋值语句语句格式:variable=expression;将表达式结果赋予一个变量。选项说明:例7.1赋值语句举例dataa;setResDat.class;bysex;n=_N_;error=_error_;first_s=first.sex;last_s=last.sex;procprint;run;x=a+b; /*规定新变量x,它是a和b的和*/t(2)=sum(ofx1-x5); /*规定数组元素,它的值是一函数值*/a=a+b; /*规定一个已经存在的变量a,它的值为原来值和b之和*/n结果显示:nObs

NameSexAgeHeightWeightnerrorfirst_slast_sn1

AliceF1356.584.010102

BarbaraF1365.398.020003

CarolF1462.8102.530004

JaneF1259.884.540005

JanetF1562.5112.550006

JoyceF1151.350.560007

JudyF1464.390.070008

LouiseF1256.377.080009

MaryF1566.5112.0900110

AlfredM1469.0112.51001011

HenryM1463.5102.511000…………例7.3用LENGTH语句得到正确输出结果data

a;length

lstknm

$12;/*规定变量lstknm的长度为12

*/lstknm="深发展";lstknm="大秦铁路";proc

print;run;nObs

lstknmnn1大秦铁路累加语句语句格式:Variable+expression;累加语句累加表达式结果。选项说明:应用准则:累加变量的观测被读入之前,值为0;表达式的计算结果为缺失值时,取0代替;表达式可以使用比较算符;语句A+(-B)中的(+)是必须的,不能写成A-B。。例7.4累加语句等于使用SUM函数和一个RETAIN语句data

a

(keep=name

height

s_h);set

ResDat.class

;s_h+height;proc

print;run;data

b

(keep=name

height

s_h);set

fdata.class

;s_h=sum(s_h,

height,

0);retain

s_h

0;run;上面两段程序等价nObs

Name

Height

s_hn1Alice56.556.5n2Barbara65.3121.8n3Carol

62.8

184.6n4Jane59.8244.4n5Janet62.5306.9n6Joyce51.3358.2n7Judy64.3422.5n8Louise56.3478.8n9Mary66.5545.3n…………应用举例例7.5表达式SUMX+X*X把X*X的结果加到SUMX上dataa(keep=dateuss);setResDat.Dret(where=(stkcd=’000002’));uss+Dret**2;/*USS为变量Dret的平方和*/run;例7.6计算非缺失值的观测个数dataa(keep=nmis);setResDat.indcls;nmis+sector^="";run;例中,NMIS为变量SECTOR非缺失值的观测个数,即按SECTOR分好类股票的个数。。DELETE语句DELETE语句停止处理当前观测,该观测值不被读入到创建的数据集,SAS系统返回到DATA步的开头处理其他观测。语句格式:DELETE;例7.7删除部分观测值datastka;setResDat.lstkinfo;ifStktype=’B’thendelete;run;例中,删除数据集RESDAT中Stktype=’B’的观测值。。例7.8清空数据集dataa;setResDat.lstkinfo;delete;run;例中,删除数据集A中的所有观测值,即清空数据集A。设计复杂程序时,常会用到DELETE语句的这种用法。。LOSTCARD语句LOSTCARD语句用于重新对准输入数据。当一个观测包含几个数据行,且当前观测缺少其中的一些行时,利用LOSTCARD语句可以防止SAS系统从下一个观测的数据行读数据作为当前观测的一部分。语句格式LOSTCARD;使用LOSTCARD语句时,必须用IF-THEN语句给出丢失数据行的条件。适合使用LOSTCARD语句的情况有:√每个观测有固定的输入数据行;√同一个观测的每个数据行都有一个同值的识别变量。。例7.9每个数据行都有一个同值的识别变量data

a;input

id

1-3

reject

#2

idc

1-3

pass;if

id

ne

idc

then

do;put

"数据行错误"id=idc=;lostcard;end;cards;411

46411

99551;proc

print;title2

"每个观测包含2个数据行";run;30132301614323025330283171n每个观测包含两个数据行40092845nnObsid

rejectidc

passn

13013230161432n

23025330283171n

34114641199551LOSTCARD语句的执行步骤:SAS日志上输出一个丢失记录卡信息,一条标尺及创建当前观测所读的数据行;不输出观测到数据集,丢弃开始读入本组的数据行,返回到DATA步开头;试图用该组第二个数据行开始并按INPUT语句规定的行数读数据行来创建观测;当丢失记录行的IF条件仍是真的,SAS重复前三步;对于IF条件不成立的一组数据行,SAS创建一个观测,并增加自动变量_N_的值。。例7.10每个观测包含3个数据行data

a;input

id1

x

$

#2

id2

y

$

#

3

id3

z

$;if

id1

ne

id2

or

id2

ne

id3

then

lostcard;cards;101

A102

B102

B103

C103

C103

C104

D105

E105

E105

E;proc

print;title

"每个观测包含3个数据行";run;nnObs每个观测包含3个数据行id1

x

id2

y

id3

zn1103C103C103Cn2105E105E105E例中,DATA步读3个数据行作为1个观测。第1个观测有2个丢失记录,第2个观测有1个丢失记录,第4个观测丢失2个记录。只有第3和第5个观测是完整的观测。。LOG窗口显示的信息:NOTE:LOSTCARD.+

1

+

2

+

3

+

4

+

5

+

6

+

7

+

8

+

9RULE:567101

A102

B102

BNOTE:

LOST

CARD.8

103

CNOTE:

LOST

CARD.9

103

CNOTE:

LOST

CARD.111213104

D105

E105

ENOTE:数据集WORK.A有2个观测和6个变量。STOP语句STOP语句停止处理DATA步。当遇到STOP语句时,正被处理的那个观测没有添加到SAS数据集上。语句格式:STOP;例7.11停止处理DATA步dataa;setresdat.lstkinfo;if_n_=5thenstop;procprint;/*OUTPUT窗口照常打印数据集列表*/run;例中,数据集A从数据集resdat.lstkinfo中读取了4条观测,因为当指针标识_N_=5时,遇到STOP语句,正被处理的那条观测没有添加到数据集A中。。ABORT语句ABORT语句中止执行当前的DATA步,继续执行下一个DATA或PROC步。执行ABORT语句时,创建ABORT语句执行前已处理观测的数据集。但是,当新创建数据集和已存在的SAS数据集同名时,不能覆盖已存在的数据集。语句格式:ABORT<ABEND|RETURN>|<n>;RETURN选项说明立即使当前的SAS作业或会话正常结束。产生的结果依赖于执行的方式。批处理方式和非交互方式下:立即停止处理;在LOG窗口显示错误信息,说明由ABORT语句的RETURN选项终程序执行;不执行任何相继的语句或检查句法;用一个条件码指示有错误地控制返回到主机系统。√显示管理方式和交互行方式下:立即停止处理并返回到主机系统。。n例7.12显示管理方式下使用stop语句与abort的区别。n使用stop语句时,LOG窗口不显示错误信息,当新创建数据集和已存在的SAS数据集同名时,能覆盖已存在的数据集。ndataa;nsetresdat.lstkinfo;nif_n_=5thenstop;nrun;nLog窗口显示:NOTE:从数据集RESDAT.LSTKINFO读取了5个观测。NOTE:数据集WORK.A有4个观测和12个变量。NOTE:“DATA语句”所用时间(总处理时间):实际时间CPU时间0.35秒0.01秒n使用abort语句时,LOG窗口显示错误信息,当新创建数据集和已存在的SAS数据集同名时,不能覆盖已存在的数据集。。ndataa;nsetresdat.lstkinfo;nif_n_=5thenabort;nrun;nLog窗口显示:ERROR:ABORT语句在行51列15终止了执行。Stkcd=000007Lstknm=深达声ALstdt=1992-04-13……NOTE:SAS系统由于错误而停止了该步的处理。NOTE:从数据集RESDAT.LSTKINFO读取了5个观测。WARNING:数据集WORK.A可能不完整。该步停止时,共有4个观测和12个变量。WARNING:数据集WORK.A由于该步已停止,而没有被替换。NOTE:“DATA语句”所用时间(总处理时间):实际时间CPU时间0.01秒0.02秒n例7.13

ABORT语句防止输入无效数据时出错。ndata

b;ninput

ssn

pay

;nif

_error_

then

abort;ncards;n111100naaa200n444300n;nprocprint;nrun;n 输出结果:Obs ssn pay1 111 100WHERE语句的性质WHERE语句读入数据集之前选择观测。WHERE语句是在执行数据集连接(SET),合并(MERGE),更新(UPDATE)或修改(MODIFY)之前进行的操作。使用WHERE语句时,因为SAS系统只从输入数据集中读入满足条件的观测,所以这样的SAS程序更有效。WHERE语句不是可执行语句,它起不到IF-THEN语句的作用。能用WHERE语句的地方一定可以用IF语句来代替,反之则不行。不过,一旦WHERE语句有效,就一定要用它,因为这样的程序效率高。。语句格式WHERE

where-expression;仅用于WHERE表达式的特殊算符例7.15

BETWEEN-AND算符和IS

MISSING|IS

NULL算符例句。Wherehstocdbetween600000and600899;Wheretaxesbetweensalary*0.30andsalary*0.50;Wheretaxesnotbetweensalary*0.30andsalary*0.50;Whereidnumismissing;/*计算缺失值数目*/Wherenameisnull;LIKE算符的两个特殊模式:百分号(%)可以替代任意多个字符;下划线(_)正好有一个字符与之匹配。进行比较时,LIKE算符识别大写和小写之间的字符。。例7.16设有名字Diana,Diane,Dianna,Dianthus,Dyan.使用LIKE算符来选择第一个字符为D的名字时,LIKE算符的不同选择模式与结果如下:Like

"D_an";Like

"D

an_";Like

"D_an

";Like

"D_an%";/*选择Dyan

*//*没有名子被选上*//*

Diana,

Diane,

Dianna,

Dyan

*//*上述列表的所有名字*/Not

like

"D_an%";/*没有名子被选上*/SAMEAND算符的形式:WHEREcandition-1;[其它SAS语句]WHERESAMEANDcondition-2[其它SAS语句]WEHERESAMEANDcondition-n;SAS系统选择除满足上述定义的条件外,还满足在SAME-AND算符后列出条件的观测。。例7.17使用算符SAME-AND来增加较多的从句到程序中已有的WHERE语句后面,而不需要重新打入原来的从句procgplotdata=ResDat.Idx000001;plotclpr*date=1;whereyear(date)>1996;wheresameandyear(date)<2000;run;quit;应用举例例7.18选择数值变量非0和非缺失的观测值Where

x;Where

x

and

y;Where

x/y;例7.19选择字符变量非缺失的观测Where

c^="";where

c

is

not

missing;字符变量C不能单独地作为逻辑表达式例7.20选择一定范围内的观测Where

x

between

1

and

5;where

1<=x<=5;例7.22不能用WHERE语句的情况dataa;setResDat.Idx000001;where_n_<100;/*错误语句,必须用if*/run;dataa;setResDat.Idx000001;if_n_<100;run;例中,不能用WHERE语句控制SAS的自动变量。。OUTPUT语句OUTPUT语句输出当前的观测到被创建的数据集中。语句格式OUTPUT<data-set-name-1><…data-set-name-n>;选项说明:OUTPUT语句的作用:√由一个输入数据行创建多个观测;√由一个输入数据文件创建多个SAS数据集;√由几个输入数据行合并为一个观测。。应用举例例7.23由一个输入数据行创建多个观测dataA;inputID$score1-score3;dropscore1-score3;score=score1;output;score=score2;output;score=score3;output;cards;0212699969402128899088;procprint;run;例中,每一行记录生成三个观测。每个新观测将包括代号ID和一次测验值SCORE.Obs

ID

score1

02126

992

02126

963

02126

944

02128

895

02128

906

02128

88例7.24一个DATA步创建多个数据集dataAB;setResDat.lstkinfo;ifStktype=’A’thenoutputAstk;elseifStktype=’B’thenoutputbstk;run;例中,一个DATA步创建两个数据集。数据集Astk包含变量Stktype=’A’’的所有观测;数据集Bstk包含变量Stktype=’B的所有观测。。例7.26由几个记录组合信息procsortdata=ResDat.lstkinfoout=lstkinfo;bystktype;dataa;setlstkinfo;bystktype;iffirst.StktypethenNum=0;Num+1;keepstktypenum;iflast.stktypethenoutput;run;例中,计算数据集lstkinfo中两类不同股票的数目。这样的方法是不是简单快捷。这个例子很有用,从这里也认识了自动变量:first.stktype和last.stktype的使用方法。数据处理时用这个语句会很省力。。MISSING语句MISSING语句规定缺失值的符号。读入含有缺失值的数据源时,必须用MISSING语句,否则可能产生读入错误。语句格式Missingcharcter1…charctern;其中:charcter规定代表缺失值的字符。。应用举例例7.29规定缺失值字符dataperiod_a;missingXI;inputId$4.Foodpr1Foodpr2Foodpr3Coffeem1Coffeem2;datalines;10011154565I781002862755728610049352X768810157335431121081027101127397679;例中,MISSING语句规定用字符X和I表示缺失值。如果不用MISSING语句,当读入数值变量的缺失值时(这里为X和I),就要产生错误。。nIdFoodpr1Foodpr2Foodpr3Coffeem1Coffeem2n10011154565I78n10028627557286n10049352X7688n1015733543112108n1027101127397679其它语句本节介绍语句LIST,CALL,NULL和ERROR.LIST语句LIST语句在SAS日志窗口上列出正被加工处理观测的输入数据行。LIST语句被执行时,在列出的第一行记录之前,显示一条指示列数的标尺。语句格式LIST;例7.30用INPUT语句读入可疑数据行时使用LIST语句

data

a;input

x

y;if

x<0

then

list;cards;2

64

2-1

2-4

6;run;n290

data

a;n291

input

x

y;n292

if

x<0

then

list;n293

cards;+1+2+3+4+5+--nRULE:n296

-1

2n297

-4

6nNOTE:数据集WORK.A有4个观测和2个变量。nNOTE:“DATA语句”所用时间(总处理时间):n

实际时间n

CPU时间0.00秒0.00秒n298

;n299

run;nLOG显示结果CALL语句CALL语句用于调用子程序。语句格式:Callroutine(parameter-1<…parameter-n>);选项说明:例7.32创建包含DATA信息的宏变量data

a;call

symput("text1","march");/*将march赋给宏变量text1

*/call

symput("beta",100);

/*将100赋给宏变量beta

*/run;例7.33发布操作系统命令NULL语句空语句是一个分号(;),用于固定位置。SAS系统用一个分号(;)或四个分号(;;;;)来接受空语句。一个分号(;)表示CARDS(或DATALINES)语句后数据行的结束。四个分号(;;;;)表示CARDS4(或DATALINES4)语句后数据行的结束。虽然空语句没有执行动作,但它是可执行语句。。例7.34空语句表示数据行结束data

a;inputxyz;ifx=.Thengotofind;list;find:;dropx;cards;125.13258.39;procprint;run;在这个DATA步,CARDS语句告诉SAS系统在这个作业流中,紧跟着的是数据行,当SAS遇到空语句(;)时,就知道数据行结束了。上例中的空语句也可以省略,因数据行后面第一个语句(PROCPRINT;)中包含一个分号。。n输出窗口显示结果nObsyzn125n213n358n439ERROR语句ERROR语句置自动变量_error_为1,并有选择地输出用户规定的一段信息到SAS的记录窗口。语句格式:ERROR<message>;选项说明:ERROR语句等价于下面一系列语句:赋值语句置_ERROR_为1;一个FILE

LOG语句;PUT语句规定一段信息;新的一个FILE语句重新设置前一个FILE语句的设置。例7.35应用举例data

a;input

name

$

type

$

age

;if

type="teen"

&

age

>19

then

error

"type

and

age

don"t

macth"

age=;cards;Wu

teen

20Li

teen

12Cindy

adult

28;n314

data

a;n315

input

name

$

type

$

age

;n316

if

type="teen"

&

age

>19

then

error

"type

and

age

don"t

macth"

age=;n317

cards;ntype

and

age

don"t

macthage=204

+

5

+

6

+

7

+nRULE:

+

1

+

2

+

3

+n318

Wu

teen

20nname=Wu

type=teen

age=20

_ERROR_=1

_N_=1nNOTE:数据集WORK.A有3个观测和3个变量。

nNOTE:“DATA语句”所用时间(总处理时间):n

实际时间n

CPU时间0.01秒0.01秒n321

;nLOG窗口显示dataa;inputname$type$age;iftype="teen"&age>19thendo;put"typeandagedon"tmacth"age=;_error_=1;end;cards;Wuteen20Liteen12Cindyadult28;run;上面程序与前一页程序结果相同。第一段用ERROR语句,第二段用PUT和_ERROR_语句。另外,可以通过FILE语句改变输出错误信息的地点。。第15章数据管理·清华大学经管学院朱世武·Zhushw@·Resdat样本数据:·SAS论坛:SAS系统提供的过程按其用途可分为四大类:数据管理;基础统计;数据呈现;数据访问。和任何一种编程语言一样,SAS系统有一些数据管理过程,用于实现常用的中间操作或数据转换。。本章将介绍的数据管理过程:数据集排序;数据集转置;改变输出地点;添加观测;数据库复制。数据集排序利用SAS的排序过程可以对数据集中的观测重新排序。SAS许多和BY配合使用的语句,如对数据集进行合并的语句或更新语句等,使用前必须先对BY变量进行排序。排序过程句法PROCSORT<option(s)><collating-sequence-option>;BY<DESCENDING>variable-1<...<DESCENDING>variable-n>;PROC

SORT语句PROCSORT<option-list><collating-sequence-option>;选项说明:DATA=规定被排序数据集,缺省时为最新创建数据集OUT=创建输出数据集,省略时用排序后数据集替换原数据集ASCII规定按ASCII排序SWEDISH规定按Swedish排序NATIONAL规定按习惯排序FORCE强行实施多余排序其中:选项FORCE强行实施多余排序。排序并替换原来加索引的或取子集的数据集,即没有规定OUT=选项时,如果没有规定FORCE,就不能对有索引的数据集进行排序和替换。没有规定OUT=选项时必须使用FORCE的选项有:OBS=系统选项;FIRSTOBS=系统选项;DATA=数据集中的数据集选项WHERS=;PROCSORT步用WHERE语句。。BY语句BY<DESCENDING>variable-1<…<DESCENDING>variable-n>;PROCSORT中必须使用BY语句,BY语句中可以规定任意多个变量。BY语句中规定多个变量时,SORT过程首先按第一个变量排序,然后是第二个变量等。BY语句中可以规定的选项:DESCENDING—对变量按下降次序排序。。应用举例例15.1按多变量排序。dataa;setResDat.Idx000001;year=year(date);qtr=qtr(date);month=month(date);procsortdata=aout=b;byyearqtrmonth;run;例中,对上证数据Idx000001按年、季和月排序。。例15.2按单变量降序排列。procsortdata=ResDat.a600001out=a;bydescendingclpr;procprintdata=a(obs=3)noobs;vardateclpr;run;例中,按收盘价CLPR的降序排列。。数据集转置·转置就是把数据集的观测变为变量,变量变为观测。利用SAS的转置过程可以对数据集进行转置。。转置过程句法·PROC

TRANSPOSE

<DATA=input-data-set><LABEL=label>

<LET>·<NAME=name>

<OUT=output-data-set>

<PREFIX=prefix>;BY

<DESCENDING>

variable-1<...<DESCENDING>

variable-n><NOTSORTED>;COPY

variable(s);n

ID

variable;n

IDLABEL

variable;n

VAR

variable(s);语句说明:PROC

TRANSPOSE语句PROCTRANSPOSE<option-list>;选项说明:VAR语句和ID语句VAR语句VARvariable-list;VAR语句列出要转置的变量。没有VAR语句时,则没有列在其它语句里的所有数值变量被转置。。ID语句IDvariable;ID语句规定输入数据集中一个变量。ID变量的值为转置后数据集的变量名。在没有选项LET时,ID变量的值在数据集中只能出现一次,使用BY语句,BY组内只包含最后的ID值。。应用举例例15.4ID变量的值为转置后数据集的变量名。proctransposedata=ResDat.classout=alet;idname;procprint;run;例中,原数据集CLASS中变量NAME的值为转置后数据集A的变量名,对所有数值变量转置。数据集A中还有一变量_NAME_.··SAS

系统

12007年03月07日星期五下午09时21分17秒·

Obs

_NAME_

Alice

Barbara

Carol

Jane

Janet

Joyce

Judy

Louise

Mary

Alfred·1Age13.013.014.0

12.0

15.0

11.0

14.0

12.0

15.0

14.0·2Height56.565.362.8

59.8

62.5

51.3

64.3

56.3

66.5

69.0·3Weight84.098.0102.5

84.5

112.5

50.5

90.0

77.0

112.0

112.5·

Obs

HenryJamesJeffreyJohnPhilipRobertRonaldThomasWilliam·114.012.013.012.01612.01511.015.0·263.557.362.559.07264.86757.566.5·3102.583.084.099.5150128.013385.0112.0例15.5BY组内最后一个ID值的观测被转置。proctransposedata=ResDat.classout=alet;idsex;procprint;run;结果显示:proctransposedata=ResDat.classout=alet;idsex;bysex;procprint;run;结果显示:例15.8对每个BY组转置。options

nodate

pageno=1

linesize=80

pagesize=40;proc

transpose

data=ResDat.fishdataout=fishlength(rename=(col1=Measurement));var

length1-length4;by

location

date;run;proc

print

data=fishlength

noobs;title

"Fish

Length

Data

for

Each

Location

and

Date";run;·1·Fish

Length

Data

for

Each

Location

and

DateLocation

Date

_NAME_

Measurement·

Cole

Pond02JUN95Length131·

Cole

Pond02JUN95Length232·

Cole

Pond02JUN95Length332·

Cole

Pond02JUN95Length433·

Cole

Pond03JUL95Length133·

Cole

Pond03JUL95Length234·

Cole

Pond03JUL95Length337·

Cole

Pond03JUL95Length432·

Cole

Pond04AUG95Length129·

…………·输出窗口显示例15.10对转置后的数据集作统计分析。noptions

nodate

pageno=1

linesize=80

pagesize=40;ndata

split;nset

ResDat.weights;narray

s{7}

s1-s7;nsubject

+

1;ndo

Time=1

to

7;nstrength=s{time};noutput;nend;ndrop

s1-s7;nrun;nproc

print

data=split(obs=15)

noobs;ntitle

"Split

Data

Set";ntitle2

"First

15

Observations

Only";nrun;n/*接左侧*/nproc

transpose

data=split

out=totsplprefix=Str;nby

program

subject;ncopy

time

strength;n

var

strength;nrun;nproc

print

data=totsplit(obs=15)

noontitle

"Totsplit

Data

Set";ntitle2

"First

15

Observations

Only";nrun;改变输出地点缺省情况下,SAS过程输出到OUTPUT窗口,SAS日志输出到LOG窗口。利用SAS的PRINTTO过程可以设定SAS过程和日志的输出地点。PRINTTO过程有以下功能:改变过程输出的目的地;改变SAS日志输出的目的地;有选择地限制SAS输出;将输出结果存放在永久文件中;将输出直接送到打印机上; 将SAS的输出作为输入数据(这时需要一些附加的程序语句)。。PRINTTO过程句法PROC

PRINTTO

<option(s)>;选项说明注意:一般情况下,PROCPRINTTO后面一定要加RUN语句。若省略RUN语句,则会丢失PRINTTO后面DATA步或PROC步第一行的输出。。应用举例例15.11将SAS日志输出到外部永久文件。proc

printto

log="d:\log.dat";/*直接输出到永久文件中*/filename

f1

"d:\out.txt";proc

prin

温馨提示

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

评论

0/150

提交评论