首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | R语言数据管理之变量创建

基础知识 | R语言数据管理之变量创建

作者头像
黑妹的小屋
发布2020-08-06 15:00:14
5430
发布2020-08-06 15:00:14
举报

R语言数据管理之变量

在做任何数据分析的第一步,是根据个人需求创建数据集,存储数据的结构是多样的,包括向量,矩阵、数据框、因子以及列表等。其实,以上几个R语言的独特术语,在C++中也会经常用到,导致很多人都会误认为自己很熟悉了(特别是小编),然而在实际的应用中,却经常出现错误。最近在处理一波量大的数据,在运行程序的过程中,因为前期数据处理错误却出现各种bug,经过检查数据集发现是数据管理的问题,为巩固R语言的基本数据管理,特地重新学习基础知识。

01

创建新变量

#创建数据框

我们来创建一份关于某央企组织新员工的体检报告的数据框吧。

> PatientID<-c(1,2,3,4,5,6)
> Data<-c("03/20/20","03/21/20","03/22/20","03/23/20","03/24/20","03/25/20")
> Age<-c(18,25,26,35,48,50)
> Gender<-c("M","F","F","M","F","M")
> City<-c("福州","厦门","泉州","龙岩","漳州","三明")
> Pr1<-c("69","57","67","65","72","55")
> Pr2<-c("180","155","159","184","167","175")
> Pr3<-c("11","14","34","23","35","12")
> Pr4<-c("6","7","5","8","6","9")
> Pr5<-c("20","34","35","56","47","19")
> S1<-c(88,78,98,56,45,60)
> S2<-c(67,87,45,25,18,96)
> mydata<-data.frame(PatientID,Data,Age,Gender,City,Pr1,Pr2,Pr3,Pr4,Pr5,S1,S2)

#在数据框中添加一列S1和S2的求和结果-方法1

> attach(mydata)
> mydata$sumS<-S1+S2
> mydata
  PatientID     Data Age Gender City Pr1 Pr2 Pr3 Pr4 Pr5 S1 S2 sumS
1         1 03/20/20  18      M 福州  69 180  11   6  20 88 67  155
2         2 03/21/20  25      F 厦门  57 155  14   7  34 78 87  165
3         3 03/22/20  26      F 泉州  67 159  34   5  35 98 45  143
4         4 03/23/20  35      M 龙岩  65 184  23   8  56 56 25   81
5         5 03/24/20  48      F 漳州  72 167  35   6  47 45 18   63
6         6 03/25/20  50      M 三明  55 175  12   9  19 60 96  156

#在数据框中添加一列S1和S2的求和结果-方法2

> mydata$SumS<-mydata$S1+mydata$S2
> mydata$SumS<-mydata$S1+mydata$S2
> mydata
  PatientID     Data Age Gender City Pr1 Pr2 Pr3 Pr4 Pr5 S1 S2 sumS SumS
1         1 03/20/20  18      M 福州  69 180  11   6  20 88 67  155  155
2         2 03/21/20  25      F 厦门  57 155  14   7  34 78 87  165  165
3         3 03/22/20  26      F 泉州  67 159  34   5  35 98 45  143  143
4         4 03/23/20  35      M 龙岩  65 184  23   8  56 56 25   81   81
5         5 03/24/20  48      F 漳州  72 167  35   6  47 45 18   63   63
6         6 03/25/20  50      M 三明  55 175  12   9  19 60 96  156  156

#在数据框中添加一列S1和S2的求和与均值结果-方法3

> mydata<-transform(mydata,SumS=S1+S2,MeanS=(S1+S2)/2)
> mydata
  PatientID     Data Age Gender City Pr1 Pr2 Pr3 Pr4 Pr5 S1 S2 sumS SumS MeanS
1         1 03/20/20  18      M 福州  69 180  11   6  20 88 67  155  155  77.5
2         2 03/21/20  25      F 厦门  57 155  14   7  34 78 87  165  165  82.5
3         3 03/22/20  26      F 泉州  67 159  34   5  35 98 45  143  143  71.5
4         4 03/23/20  35      M 龙岩  65 184  23   8  56 56 25   81   81  40.5
5         5 03/24/20  48      F 漳州  72 167  35   6  47 45 18   63   63  31.5
6         6 03/25/20  50      M 三明  55 175  12   9  19 60 96  156  156  78.0

02

变量的重编码

变量的重新编码是指对一个或多个变量现有值进行修改,创建一个新值的过程。可以理解为将数据框中个别错误值进行修正,或者将一列或者一行的连续性的变量修改为一组类别值等。

#将mydata数据框中的Age这个连续型的变量重新编码,改为类别型的变量Age Class(比如Young,Middle Aged、Elder)

方法1

> mydata$AgeClass[mydata$Age>=45]<-"Elder"
> mydata$AgeClass[mydata$Age<=45&mydata$Age>=30]<-"Middle Aged"
> mydata$AgeClass[mydata$Age<=30]<-"Young"
> mydata
  PatientID     Data Age Gender City Pr1 Pr2 Pr3 Pr4 Pr5 S1 S2 sumS SumS MeanS    AgeClass
1         1 03/20/20  18      M 福州  69 180  11   6  20 88 67  155  155  77.5       Young
2         2 03/21/20  25      F 厦门  57 155  14   7  34 78 87  165  165  82.5       Young
3         3 03/22/20  26      F 泉州  67 159  34   5  35 98 45  143  143  71.5       Young
4         4 03/23/20  35      M 龙岩  65 184  23   8  56 56 25   81   81  40.5 Middle Aged
5         5 03/24/20  48      F 漳州  72 167  35   6  47 45 18   63   63  31.5       Elder
6         6 03/25/20  50      M 三明  55 175  12   9  19 60 96  156  156  78.0       Elder

方法2

> mydata<-within(mydata,{
+ AgeClass[Age>=45]<-"Elder"
+ AgeClass[Age>=30&Age<=45]<-"Middle Aged"
+ AgeClass[Age<30]<-"Young"})
> mydata
  PatientID     Data Age Gender City Pr1 Pr2 Pr3 Pr4 Pr5 S1 S2 sumS SumS MeanS    AgeClass
1         1 03/20/20  18      M 福州  69 180  11   6  20 88 67  155  155  77.5       Young
2         2 03/21/20  25      F 厦门  57 155  14   7  34 78 87  165  165  82.5       Young
3         3 03/22/20  26      F 泉州  67 159  34   5  35 98 45  143  143  71.5       Young
4         4 03/23/20  35      M 龙岩  65 184  23   8  56 56 25   81   81  40.5 Middle Aged
5         5 03/24/20  48      F 漳州  72 167  35   6  47 45 18   63   63  31.5       Elder
6         6 03/25/20  50      M 三明  55 175  12   9  19 60 96  156  156  78.0       Elder

03

变量的重命名

#将City修改为Location,Data修改成Examination date

方法1:rename()函数

> install.packages("reshape")
> library(reshape)
> mydata<-rename(mydata,c(City="Location",Data="Examination data"))
> mydata
  PatientID Examination data Age Gender Location Pr1 Pr2 Pr3 Pr4 Pr5 S1 S2 sumS SumS MeanS
1         1         03/20/20  18      M     福州  69 180  11   6  20 88 67  155  155  77.5
2         2         03/21/20  25      F     厦门  57 155  14   7  34 78 87  165  165  82.5
3         3         03/22/20  26      F     泉州  67 159  34   5  35 98 45  143  143  71.5
4         4         03/23/20  35      M     龙岩  65 184  23   8  56 56 25   81   81  40.5
5         5         03/24/20  48      F     漳州  72 167  35   6  47 45 18   63   63  31.5
6         6         03/25/20  50      M     三明  55 175  12   9  19 60 96  156  156  78.0
     AgeClass
1       Young
2       Young
3       Young
4 Middle Aged
5       Elder
6       Elder

方法2:names()函数

#将Data命名为Examination data,Pr1-5修改为Item1-5。

> names(mydata)[2]<-"Examination date"
> names(mydata)[7:11]<-c("Item1","Item2","Item3","Item4","Item5")
> mydata
  PatientID Examination date Age Gender Location Pr1 Item1 Item2 Item3 Item4 Item5 S2 sumS
1         1         03/20/20  18      M     福州  69   180    11     6    20    88 67  155
2         2         03/21/20  25      F     厦门  57   155    14     7    34    78 87  165
3         3         03/22/20  26      F     泉州  67   159    34     5    35    98 45  143
4         4         03/23/20  35      M     龙岩  65   184    23     8    56    56 25   81
5         5         03/24/20  48      F     漳州  72   167    35     6    47    45 18   63
6         6         03/25/20  50      M     三明  55   175    12     9    19    60 96  156
  SumS MeanS    AgeClass
1  155  77.5       Young
2  165  82.5       Young
3  143  71.5       Young
4   81  40.5 Middle Aged
5   63  31.5       Elder
6  156  78.0       Elder

小结

R语言最大的优势是绘图,学R的初衷就是为了绘制实验过程产生的数据图,然而随着深度学习,会发现,R语言的数据分析也很重要,常常在绘制图形的过程中,因为数据框存在格式不统一,字符或者缺失值等原因导致绘图失败。对于非数学专业又喜欢R语言的人来说,学R之路漫漫其修远,没有极客基因是不行的,打好基础是进阶的前提!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 菜鸟学数据分析之R语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档