R语言R语言学习数据-R语言-图表-决策-Linux-Python

R语言学习(三)基本数据管理

2019-01-21  本文已影响25人  邱俊辉

这里举一个例子来引出基本数据管理的操作
首先先创建一个数据框

> manager<-c(1,2,3,4,5)
> date<-c("10/24/08","10/28/14","10/01/14","10/12/14","05/01/14")
> 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)
> leadership
  manager     date country gender age q1 q2 q3 q4 q5
1       1 10/24/08      US      M  32  5  4  5  5  5
2       2 10/28/14      US      F  45  3  5  2  5  5
3       3 10/01/14      UK      F  25  3  5  5  5  2
4       4 10/12/14      UK      M  39  3  3  4 NA NA
5       5 05/01/14      UK      F  99  2  2  1  2  1

需要解决的问题如下:
1.五个评分(q1:q5)需要组合起来给出平均得分
2.数据中缺失值(NA)的处理
3.怎么提取出感兴趣的变量的数据集
4.如何研究得分与年龄之间的关系
5.如何选择特定的时间进行研究

创建新变量

在研究中需要创建新变量或者对现有的变量进行变换
变量名<-表达式
例如将上述数据框中q1到q5求和

> sum<-leadership$q1+leadership$q2+leadership$q3+leadership$q4+leadership$q5
> sum
[1] 24 20 20 NA  8

这样就得到了q1到q5的和,其中NA为缺失值
下一步将sum变量添加到数据框中,建议使用transform()函数
它可以为原有的数据框增加新列、改变原列的值,通过复制NULL来删除原有的列

> leadership1<-transform(leadership,sum=q1+q2+q3+q4+q5)
> leadership1
  manager     date country gender age q1 q2 q3 q4 q5 sum
1       1 10/24/08      US      M  32  5  4  5  5  5  24
2       2 10/28/14      US      F  45  3  5  2  5  5  20
3       3 10/01/14      UK      F  25  3  5  5  5  2  20
4       4 10/12/14      UK      M  39  3  3  4 NA NA  NA
5       5 05/01/14      UK      F  99  2  2  1  2  1   8

变量的重编码

重编码涉及根据同一个变量和/或其他变量现有值创建新值的过程
要重编码数据,可以使用R中一个或多个逻辑运算符,逻辑运算表达式可返回TRUE或FALSE
比如说要把上述数据框中大于75岁的连续型age变量重编码为类别型变量Elder,大于55小于75的为Middle Aged,小于55的为Young

> leadership1$age[leadership1$age>75]<-"Elder"
> leadership1$age[leadership1$age<=75 & leadership1$age>=55]<-"Middle Aged"
> leadership1$age[leadership1$age<=55]<-"Young"
> leadership1
  manager     date country gender   age q1 q2 q3 q4 q5 sum
1       1 10/24/08      US      M Young  5  4  5  5  5  24
2       2 10/28/14      US      F Young  3  5  2  5  5  20
3       3 10/01/14      UK      F Young  3  5  5  5  2  20
4       4 10/12/14      UK      M Young  3  3  4 NA NA  NA
5       5 05/01/14      UK      F Elder  2  2  1  2  1   8

变量的重命名

用fix()函数修改变量名

> fix(leadership1)
image.png

不仅可以修改变量名称,还可以修改变量的类型

缺失值

is.na()函数判断缺失值是否存在

> is.na(leadership1[,6:10])
        q1    q2    q3    q4    q5
[1,] FALSE FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE  TRUE  TRUE
[5,] FALSE FALSE FALSE FALSE FALSE

可以看到数据框中有两个缺失值
用na.omit()函数来删除缺失值

> leadership1<-na.omit(leadership1)
> leadership1
  manager     date country gender   age q1 q2 q3 q4 q5 sum
1       1 10/24/08      US      M Young  5  4  5  5  5  24
2       2 10/28/14      US      F Young  3  5  2  5  5  20
3       3 10/01/14      UK      F Young  3  5  5  5  2  20
5       5 05/01/14      UK      F Elder  2  2  1  2  1   8

可以看到含有缺失值的一行已经被删除

数据排序

可以用order()函数对一个数据框进行排序,默认为升序,在排序变量前加上一个减号可以降序排序

> newdata<-leadership[order(leadership$age),]
> newdata
  manager     date country gender age q1 q2 q3 q4 q5
3       3 10/01/14      UK      F  25  3  5  5  5  2
1       1 10/24/08      US      M  32  5  4  5  5  5
4       4 10/12/14      UK      M  39  3  3  4 NA NA
2       2 10/28/14      US      F  45  3  5  2  5  5
5       5 05/01/14      UK      F  99  2  2  1  2  1
> newdata<-leadership[order(-leadership$age),]
> newdata
  manager     date country gender age q1 q2 q3 q4 q5
5       5 05/01/14      UK      F  99  2  2  1  2  1
2       2 10/28/14      US      F  45  3  5  2  5  5
4       4 10/12/14      UK      M  39  3  3  4 NA NA
1       1 10/24/08      US      M  32  5  4  5  5  5
3       3 10/01/14      UK      F  25  3  5  5  5  2

数据集的合并

向数据框中添加列
可以用merge()函数

total<-merge(dataframeA,dataframeB,by="ID")

这条语句的意思是将数据框A和数据框B按照ID进行合并

从数据集中选区特定的子集

最常用的是subset()函数

> newdata<-subset(leadership,age>=30 & age<=50)
> newdata
  manager     date country gender age q1 q2 q3 q4 q5
1       1 10/24/08      US      M  32  5  4  5  5  5
2       2 10/28/14      US      F  45  3  5  2  5  5
4       4 10/12/14      UK      M  39  3  3  4 NA NA
newdata<-subset(leadership,age>=30 & age<=50,select = c(q1,q2,q3,q4,q5))
> newdata
  q1 q2 q3 q4 q5
1  5  4  5  5  5
2  3  5  2  5  5
4  3  3  4 NA NA

其中select用于选区要保留的列
以上就是基本数据的管理

上一篇 下一篇

猜你喜欢

热点阅读