加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SPSS中Recode、Compute、Count、If命令[转]

(2014-04-21 16:31:51)
标签:

spss

count

yamoda

recode

it

分类: BI_SPSS
在进行统计分析时,经常需要对某些数据进行重新处理,如年龄、身高、收入等,了解他们的分布或进行分析。
  1SPSS的数据变换,主要命令有四种:
  2Recode 命令:重新编码数据,重新安排数据
  3Compute命令:对原始数据进行四则运算或指数运算等,派生出新的变量
  4Count命令:创建一个新变量来计算某些变量值所出现的次数
  5If命令:如果表达式成立,则创建一个新变量
  一.Recode 命令对数据重新编码
  1.基本格式
  Recode V1 V2…(原值1=新值1(原值m=新值n
  /X1X2…(原值1=新值1(原值m=新值n.
  几个变量重新编码,如果变量值不一样,可以用反斜杠 / 隔开
  Recode命令与变量、括号之间要有空格
  在原值中使用的关键词有:
  loLowest
  HIhighest
  Thru
  Missing
  Else
  Sysmis
  2.举例
  recode age 0 thru 20=1)(21 thru 40=2)(41 thru 60=3)(61 thru 100=4.
  recode age lo thru 20=1)( 21 thru 40=2)(41 thru 60=3)(61 thru hi=4.
  recode V1 to V30=1)(1=0)(3=2.
  recode v1v2v30=1)(1=0)(3=2.
  用missing再编码缺省值(如把原定为99岁的缺省值改为00岁,则:
  recode age missing=00.
  Missing关键词不能出现在右边
  Recode age 00=missing. 是错误的。
  Recode value age 00. 是正确的
  对系统缺省值sysmis进行重新编码。系统缺省值是SPSS内部把无效的值自动打上“·”而剔除掉。
  recode age missing=sysmis.
  没有关键词时的重新编码
  recode age 020=1)(2140=2)(4160=3)(61100=4.
  对字符串重新编码有一些特别的要求
  recode sex ’M’=’A’)( ’F’=’B’.
  recode name’wangsan’=’wan
  .
  注意:新旧字符串的长度必须相等,不足的,要用空格补齐
  要用单引号把内容引起来
  recode 命令放在统计过程之前
  特别应该引起注意的是:如果单纯使用上述recode方法对变量进行重新编码,则会改变原始的数据录入格式,即改变原来的变量。如果需要重新编码而又不希望改变原始的数据结构,在编程时应该与compute命令一起使用。上述问题在用对话框进行重新编码时可以得到较好的解决。
 
  第一种:对原始的数据进行重新编码,改变原来变量的数据结构
  File----Open ---Data-----*·sav-----OK----Transform-------Recode into same variable
  点选ageNumeric Variable―――点击Old and New Values――出现如下对话框
  第二种:保持原始变量的数据结构,重新编码的数据生成新的变量
  Transform------- Recode into different variable
  点选ageNumeric Variableoutput――Name框打入agenew(新变量名)----出现对话框如下
  在new values中填上需要编码的值-----add-----重复----continue----点选Change――OK-----存盘
  也可以在SPSSVariable view中进行
  二.用Compute命令创建新变量
  1.命令格式
  Compute 新变量=老变量1[+ — ×÷]老变量2.
  Compute 新变量=函数.
  对整个数据通过函数关系进行重新排列,常用的函数有:
  ABS绝对值
  ARSIN反正弦函数
  ARTAN反正切函数
  COS余弦函数
  EXP以自然数e为底的指数函数
  LG10
  LN 自然对数 时间的差别很大,在做模型时,往往用LN时间,效果比较好(有渐近线),周期性很强的数考虑用SINCOS数据差距很大但是没有渐近线,可以考虑用平方根缩小差距.根据数据的特点和研究的目的选择运算与函数
  SQRT平方根如年龄的平方根,可以缩小年龄之间的差距
  TRUNC截取某自变数的整数部分
  SIN
  MOD 除于10以后的余数(模数)
  RND 取自变数最接近的整数部分
  Compute F=MOD196.结果是6
  Compute G=RND-4.5.结果是-5
  在进行函数运算时,如果出现下面的情况,被当作是系统缺省值处理
  在幂运算中,指数不是整数;
  被开方的数是负数
  在EXP的指数运算中,自变数的结果太大
  在LG10中,自变数为负数或0
  在MOD10中,自变数为负数或0
  自变数X为缺省值时,SPSS则认为是系统缺省值
  日期运算函数中,自变数日期无效
  任何自变数是系统缺省值时,则该个案是系统缺省值
  日期函数YAMODA,可以把自变数表中所列的年月日变为天数,这种年月日顺序与中国的年月日顺序是一致的,计算天数是从15821015日开始(格里历的第一天)
  compute day=YAMODA15821015.
  结果是day=1(天)
  compute age=[YAMODA1945421)-YAMODA1999101]/365×25.
  可以从两个日期的间隔算出年龄是多少
  三. COUNT命令
  在限制性多项选择中合成新的变量,生成01编码的变量,如农民工在北京选择住房因素列出了9项因素,询问其第一选择、第二选择与第三选择是什么。如果想把第一、二、三选择都选择了上班方便的人找出来,生成一个新的变量,则可以用count命令。
  1.命令格式
  Count 新变量名=老变量1(数值范围)老变量2(数值范围)老变量n(数值范围).
  #例计算住房三个选择都选择了上班方便的人(原变量中的编码是1
  则Count house = b8.1 (1) b8.2 (1) b8.3 (1) .
  计算收入在300元以下的个案
  count income1=incomelo thru 300.
  计算收入在1000元以上的个案
  count income2=income1000 thru hi.
  显示某些变量中有系统缺失值的个案和用户缺失值的个案
  count M=age incomesysmis.
  Count M1=age incomemissing.
  2.在对话框中运行Count
  当要计算同时满足两个变量取值条件的记录数量有多少时,直接用对话框会出现完全错误的结果,这里需要对对话框生成的程序加以修改,怎么修改?
  注意:有的时候编程序可以完成对话框无法完成的工作。
  如打开农民工调查数据,现在想把满足下列条件的人找出来:第一选择是选择了上班方便,第二选择选择的是位置好,第三选择选择的是房租低并且要看每个人符合以上三个条件中的几条。
  先用对话框做一下,然后paste一下对话框会生成什么样的程序,我们可以看到对话框生成的程序是:
  COUNT
  house = b8.1 b8.2 b8.3 (1) b8.1 b8.2 b8.3 (2) b8.1 b8.2 b8.3 (3) .
  EXECUTE .
  这个语句显然不符合我们的要求,因为我们要求”1”只对第一选择进行限制,而不对第二选择和第三选择进行限制。
  所以,需要修改程序:COUNT
  COUNT
  house = b8.1 1) b8.2 2 b8.3 (3) .
  EXECUTE .
  四·If命令做条件变换和逻辑校
  1.命令格式
  [1]IF命令格式1
  IF(表达式成立)新变量=新表达式
  [2]IF命令格式2
  IF(表达式成立)新变量=数值
  表达式中的关系符一般有6
  EQ=) LE(<=) GT>
  LT<</span>
  GE>= NE<>
  IF命令一定要用compute命令引导
  [3]举例
  compute taxes=0.
  Ifincome GE800 taxes=income×0.2.
  月收入大于等于800,纳税20%
  逻辑表达式中可以用AND &); ORI);NOT~)三种。
  IF age GE18 AND sex NE 1 Group=1.
  If NOT Race=1 AND sex NE 0 Group=1.
  当Race不等于1,同时 sex不等于0时,则归入第一组
  在IF命令中,如果有一个变量有缺省值,无法确定整个表达式的真假时,命令不执行,这个时候SPSS将依然保留新变量原有数值不变
  原来有缺省值的,依然为缺省值。
  五.对变量进行分组(Categorize Variables
  对变量进行分组指的是把连续型数值型资料转变为具体的分类数据,进行转换时是按照百分位数进行分组,这样可以使每个组都有大概相等的观察值。如把一个变量分为4个组,则第一组在25%百分位数下,第二组在2550%,第三组在5075%,第四组大于75%,组数可以自己决定
  六.变量值秩次确定
  Transform----Rank Cases
  Variable框:放你需要进行排序的变量,
  By框:放用以确定分组排序的依据―――
  Assign rank 1 to-----指用来制定秩次排列方式: Smallest value 表示最小值用1标注, Largest value表示最大值用1标注
  Rank Type―――可以选择的排序类型,主要有:
  Rank:普通秩次,系统默认方式,
  Savage score :以指数分布为基础的原始分为秩次
  Fractional rank:以分组例数之和占总例数的累积百分比为秩次
  Fractional rank as:以累积百分比分数为秩次
  Sum of case weights:以分组例数的权重为秩次
  Ntiles:先给定一个大于1的整数,系统按照这个数值开始确定排序的秩次
  Proportion estimated:比例估计,是以一个特别秩次对应分布的累积比的估计
  Normal score:正态分数
  Ties:当选择的变量具有相同值时,秩次的确定原则:
  Mean:给点秩取平均值,此为系统默认方式
  Low:给点秩取最小值
  High:给点秩取最大值
  Sequential ranks to unique values:给点秩取第一个出现的秩次值,其它观察量秩次顺序排列
  七.自动对变量重新赋值 Automatic Recode
  Automatic Recode对话框:把要重新赋值的变量放到Variable框,在New name 框内对新变量进行变量名的确定,赋值方式:从lowest value开始,largest value开始。生成的新变量实际上是对老变量根据从大到小或从小到大的原则对其进行了赋值。如某个值在老变量中排第五,则在重新赋值时赋予5这个值。
  八.缺失值的替代 Replace Missing Values
  当变量有缺失值时,可以进行科学替代,点击Transform 菜单中的 Replace Missing Values对话框,把有缺失值的变量放到New variables对话框中,系统会自动产生用于替代缺失值的新变量名,默认变量名为原来变量名后加-1,我们也可以在Name框内自己定义替代缺失值的新变量名,然后Method 箭头,选择缺失值的替代方式,共有5种方式
  1.
  Series mean用这个变量的所有非缺失值的均数作替代
  2.
  Mean of nearby points:用缺失值相邻点的非缺失值的均数做替代,取多少个相邻点可以由Span of near by points选择项来确定
  3.
  Median of nearby points:用缺失值相邻点的非缺失值的中位数做替代,取多少个相邻点可以Span of near by points选择项来确定
  4.
  Linear interpolation:用缺失值相邻两点非缺失值做线性内插法替代
  5.
  Linear tread at point:用拟合的直线方程估计缺失值。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有