R语言统计分析——数据管理1

参考资料:R语言实战【第2版】

        创建分析用数据集:

manager<-c(1,2,3,4,5)
date<-c('10/24/08','10/28/08','10/1/08','10/12/08','5/1/09')
country<-c('US','US','UK','UK','UK')
gender<-c('M','F','F','M','F')
age<-c(32,45,25,39,99)
q1<-c(5,3,3,3,2)
q2<-c(4,5,5,3,2)
q3<-c(5,2,5,4,1)
q4<-c(5,5,5,NA,2)
q5<-c(5,5,2,NA,1)
leadership<-data.frame(manager,date,country,gender,age,
                       q1,q2,q3,q4,q5,stringsAsFactors = FALSE)

1、创建新变量

        在项目研究中,我们经常需要创建新变量或者对现有的变量进行变换。可以通过以下形式的语句来完成:

        变量名<-表达式

        下面的表达式中的运算符含义:

+:加

-:减

*:乘

/:除

^或**:求幂

x%%y:取余数,5%%2的结果为1。

x%/%y:取整数,5%/%2的结果为2。

# 创建新变量
mydata<-data.frame(x1=c(2,2,6,4),
                   x2=c(3,4,2,8))
# 方法1
mydata$sumx<-mydata$x1+mydata$x2
mydata$meanx<-(mydata$x1+mydata$x2)/2
# 方法2
attach(mydata)
  mydata$sumx1<-x1+x2
  mydata$meanx1<-(x1+x2)/2
detach(mydata)
# 方法3【推荐】
mydata<-transform(mydata,
                  sumx2=x1+x2,
                  meanx=(x1+x2)/2)
mydata

2、变量的重编码

        重编码涉及根据同一个变量和/或其他变量的现有值创建新值得过程。例如我们可以:①将一个连续型变量修改为一组类别值;②将误编码的值替换为正确值;③基于一组分数线创建一个表示及格/不及格的变量。

运算符描述
<小于
<=小于或等于
>大于
>=大于或等于
==严格等于
!=不等于
!x非x
x|yx或y
x&y

x和y

isTRUE(x)测试x是否为TRUE
# 将leadership中的年龄为99的值重编码为缺失值
leadership$age[leadership$age==99]<-NA
# 将年龄列重编码为分类数据
leadership$agecat[leadership$age>75]<-'Elder'
leadership$agecat[leadership$age>=55 & leadership$age<=75]<-'Middle Aged'
leadership$agecat[leadership$age<55]<-'Young'
# 紧凑的表达方式如下:
leadership<-within(leadership,{
  agecat<-NA
  agecat[age>75]<-'Elder'
  agecat[age>=55 & age<=75]<-'Middle Age'
  agecat[age<55]<-'Young'
})
leadership

3、变量的重命名

        如果对现在的变量名称不满意,我们可以对变量名称进行修改。可以通过names()函数来重命名变量。如下:

        names(leadership)[2]<-'testDate'

names(leadership)
names(leadership)[2]<-'testDate'
names(leadership)[6:10]<-c('item1','item2','item3','item4','item5')

library(plyr)
leadership<-rename(leadership,
                   c(manager='managerID'))
names(leadership)

4、缺失值

        在R中,缺失值以符号NA(Not Available,不可用)表示。在R中字符型和数值型数据局使用的缺失值符号是相同的。我们可以用is.na()函数来检测是否存在缺失值。

y<-c(1,2,3,NA)
is.na(y)
is.na(leadership[,6:10])

        在处理缺失值时,需注意:①缺失值被认为是不可比较的,即便是与缺失值自身的比较。这就意味着无法使用比较运算符来检测缺失值是否存在。②R并不把无限的或不可能出现的数值标志为缺失值。

(1)重编码某些值为缺失值

        我们可以使用赋值语句将某些值重编码为缺失值。如:

        leadership$age[leadership$age==9]<-NA

(2)在分析中排除缺失值

        确定了缺失值的位置后,我们在进一步的分析数据之前可能需要以某种方式删除这些缺失值。原因是:含有缺失值的算术表达式和函数的计算的结果也是缺失值。

# 创建数据
x<-c(1,2,NA,3)
y<-x[1]+x[2]+x[3]+x[4]
z<-sum(x)
y
z
z<-sum(x,na.rm=TRUE)
z

        我们也可是通过函数na.omit()移除所有含有缺失值的观测。na.omit()可以删除所有含有缺失数据的行。

leadership
newdata<-na.omit(leadership)
newdata

        删除所有含有缺失数据的观测(称为行删除,listwize deletion)是处理不完整数据集的若干手段之一。如果只有少数缺失值或者缺失值尽集中与一小部分观测中,行删除不失为解决缺失值问题的一种手段。但如果缺失值遍布于数据之中,或者一小部分变量中包含大量的缺失数据,行删除可能会剔除相当比例的数据。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值