分享

R语言 | 第五讲:R语言的数据管理(一)

 刘p7557pnygqhy 2018-10-12

撰稿人:统计小可爱、植大人


在前两讲中,我们介绍了多种导入数据到R中的方法以及R的各种数据结构。但是,当你开开心心准备进行数据分析时才发现,这只是数据准备的第一步。根据不同的分析策略,我们要完成对数据集变量的修改,或者不同数据集的组合排序等数据管理任务。很多时候,大部分的数据分析时间都花在实际分析前的数据准备上。我们将在下面几讲中来介绍如何解决这些问题。

 创建新变量

很多时候,你可能需要创建新变量或对现有变量进行变换。例如,你有一个名为mydata的数据框,其中变量为var1var2,现在你想创建一个新变量var3来储存以上两个变量的加和。可以使用以下代码:

mydata$var3<- mydata$var1 mydata$var2

mydata<- transform(mydata, var3= var1 var2)

 变量的重编码

当你想将一个连续型变量进行重新分组或者将某个变量的值进行替换的时候,我们便要用到变量的重编码。我们这里可以使用一个或多个逻辑运算符。逻辑运算符可以返回True或Flase值。

表1 逻辑运算符

假设,你想要对pbc数据集(survival包)中的连续型年龄变量age,根据<30岁为1, 30-59岁为2,60岁及以上为3来重新分组,并给数据集新增一个变量age_new保存年龄分组数据。

首先,我们先把99岁的年龄值重新编码为缺失值,其代码为:

pbc$age[pbc$age==99]<-NA

#语句 “变量[条件]<-表达式” 将仅在条件的值为True时执行赋值。

当指定好年龄缺失值后,我们便可以使用下面的代码创建age_new变量:

pbc$age_new[pbc$age<30]<-1

pbc$age_new[pbc$age>=30 & 

                        pbc$age<60]<-2

pbc$age_new[pbc$age>60]<-3

可以看到,新变量age_new已经保存保存在数据框中。

另外,当逻辑语句结果为TRUE时,R返回的值为1,当结果为Flase时,R返回的值为0。所以我们也可以通过下面的语句来实现对年龄变量age的分组。

pbc$age_new <- 1 (pbc$age >= 30)

                                (pbc$age >= 60)

当数据集pbc中的age变量小于30时,判断语句pbc$age>=30和pbc$age>=60均不成立,均为0,则pbc$age_new为1 0 0=1;

当30≤age<60时,判断语句pbc$age>=30为1,pbc$age>=60为0,则pbc$age_new为1 1 0=2;

当age≥60时,pbc$age_new为1 1 1=3。

 类型变换

如果现在对age_new进行数据分析,我们发现R是把age_new变量当成连续型数值变量。这时候就得对这个变量进行类型转换,把age_new变量处理成因子型变量。

R中提供了一系列将某个对象的数据类型转换成另一种数据类型的函数:

表2 类型转换函数

例如,我们这里使用factor()函数把age_new转换成因子型变量,并给'1','2','3'值加上标签:

pbc$age_new <- factor(pbc$age_new,

        levels = c(1,2,3),

        labels = c('<30岁','30-59岁','≥60岁'))


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多