vlambda博客
学习文章列表

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

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 sumS1 1 03/20/20 18 M 福州 69 180 11 6 20 88 67 1552 2 03/21/20 25 F 厦门 57 155 14 7 34 78 87 1653 3 03/22/20 26 F 泉州 67 159 34 5 35 98 45 1434 4 03/23/20 35 M 龙岩 65 184 23 8 56 56 25 815 5 03/24/20 48 F 漳州 72 167 35 6 47 45 18 636 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 SumS1 1 03/20/20 18 M 福州 69 180 11 6 20 88 67 155 1552 2 03/21/20 25 F 厦门 57 155 14 7 34 78 87 165 1653 3 03/22/20 26 F 泉州 67 159 34 5 35 98 45 143 1434 4 03/23/20 35 M 龙岩 65 184 23 8 56 56 25 81 815 5 03/24/20 48 F 漳州 72 167 35 6 47 45 18 63 636 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 MeanS1 1 03/20/20 18 M 福州 69 180 11 6 20 88 67 155 155 77.52 2 03/21/20 25 F 厦门 57 155 14 7 34 78 87 165 165 82.53 3 03/22/20 26 F 泉州 67 159 34 5 35 98 45 143 143 71.54 4 03/23/20 35 M 龙岩 65 184 23 8 56 56 25 81 81 40.55 5 03/24/20 48 F 漳州 72 167 35 6 47 45 18 63 63 31.56         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 AgeClass1 1 03/20/20 18 M 福州 69 180 11 6 20 88 67 155 155 77.5 Young2 2 03/21/20 25 F 厦门 57 155 14 7 34 78 87 165 165 82.5 Young3 3 03/22/20 26 F 泉州 67 159 34 5 35 98 45 143 143 71.5 Young4 4 03/23/20 35 M 龙岩 65 184 23 8 56 56 25 81 81 40.5 Middle Aged5 5 03/24/20 48 F 漳州 72 167 35 6 47 45 18 63 63 31.5 Elder6 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 AgeClass1 1 03/20/20 18 M 福州 69 180 11 6 20 88 67 155 155 77.5 Young2 2 03/21/20 25 F 厦门 57 155 14 7 34 78 87 165 165 82.5 Young3 3 03/22/20 26 F 泉州 67 159 34 5 35 98 45 143 143 71.5 Young4 4 03/23/20 35 M 龙岩 65 184 23 8 56 56 25 81 81 40.5 Middle Aged5 5 03/24/20 48 F 漳州 72 167 35 6 47 45 18 63 63 31.5 Elder6 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 MeanS1 1 03/20/20 18 M 福州 69 180 11 6 20 88 67 155 155 77.52 2 03/21/20 25 F 厦门 57 155 14 7 34 78 87 165 165 82.53 3 03/22/20 26 F 泉州 67 159 34 5 35 98 45 143 143 71.54 4 03/23/20 35 M 龙岩 65 184 23 8 56 56 25 81 81 40.55 5 03/24/20 48 F 漳州 72 167 35 6 47 45 18 63 63 31.56 6 03/25/20 50 M 三明 55 175 12 9 19 60 96 156 156 78.0 AgeClass1 Young2 Young3 Young4 Middle Aged5 Elder6 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 sumS1 1 03/20/20 18 M 福州 69 180 11 6 20 88 67 1552 2 03/21/20 25 F 厦门 57 155 14 7 34 78 87 1653 3 03/22/20 26 F 泉州 67 159 34 5 35 98 45 1434 4 03/23/20 35 M 龙岩 65 184 23 8 56 56 25 815 5 03/24/20 48 F 漳州 72 167 35 6 47 45 18 636 6 03/25/20 50 M 三明 55 175 12 9 19 60 96 156 SumS MeanS AgeClass1 155 77.5 Young2 165 82.5 Young3 143 71.5 Young4 81 40.5 Middle Aged5 63 31.5 Elder6 156 78.0 Elder

小结



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

♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩
♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩
♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩
♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩


我知道你  在看  哦