前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【学习】《R实战》读书笔记(第四章)

【学习】《R实战》读书笔记(第四章)

作者头像
小莹莹
发布2018-04-19 15:39:34
8680
发布2018-04-19 15:39:34
举报
文章被收录于专栏:PPV课数据科学社区

读书会是一种在于拓展视野、宏观思维、知识交流、提升生活的活动。PPV课R语言读书会以“学习、分享、进步”为宗旨,通过成员协作完成R语言专业书籍的精读和分享,达到学习和研究R语言的目的。读书会由辅导老师或者读书会成员推荐书籍,经过讨论确定要读的书,每个月读一本书且要精读,大家一起分享。

第四章 基本数据管理

本章概要

1操作数据和缺失值。

2明白数据类型转换

3创建和重命名变量

4排序、合并和子数据集

5选择和删除变量

本章所介绍内容概括如下。

把数据导入矩阵或者数据框仅是数据分析准备的第一步,花在数据分析的60%的时间用在为分析所做的数据准备。

一个工作例子

案例:研究男女管理者领导他们组织的差异。

数据集(数值5、4、3、2和1分别表示强烈反对、反对、中立、支持、强烈支持)如图1所示。

图1:不同性别的领导行为

如何把图1的中数据导入R,对这些数据,我们有什么发现呢?

创建新的变量

一些场景,我们需要创建新的变量,形式如下:

newvariable <- expression

算术运算如图2所示。

图2: R 算术运算符号

举例说明如下

> rm(list=ls())

> 10+3

[1] 13

> 10-3

[1] 7

> 10*3

[1] 30

> 10/3

[1] 3.333333

> 10^3

[1] 1000

> 10**3

[1] 1000

> 10%%3

[1] 1

> 10%/%3

[1] 3

在数据框中加入新变量有三种方法,举例说明如下。

方法一:

> rm(list=ls())

> mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))

> mydata$sumx <- mydata$x1 + mydata$x2

> mydata$meanx <- (mydata$x1 + mydata$x2)/2

> mydata

x1 x2 sumx meanx

1 2 3 5 2.5

2 2 4 6 3.0

3 6 2 8 4.0

4 4 8 12 6.0

方法二:

> rm(list=ls())

> mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))

> attach(mydata)

> mydata$sumx <- x1 + x2

> mydata$meanx <- (x1 + x2)/2

> detach(mydata)

> mydata

x1 x2 sumx meanx

1 2 3 5 2.5

2 2 4 6 3.0

3 6 2 8 4.0

4 4 8 12 6.0

方法三:

> rm(list=ls())

> mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))

> mydata<-transform(mydata, sumx=x1+x2, meanx=(x1+x2)/2)

> mydata

x1 x2 sumx meanx

1 2 3 5 2.5

2 2 4 6 3.0

3 6 2 8 4.0

4 4 8 12 6.0

重编码变量

R逻辑运算符号如图3所示。

图3:R逻辑运算符号

基于逻辑运算符号关系来改变变量中内容,逻辑值为真,则可以修改。

拓展可以了解within()函数和car包中的recode()函数。

重命名变量

重命名变量名,可以采用方法。

方法一:fix()函数。

方法二:包reshape中的rename()函数。

方法三:names()函数。

缺失值

数据集往往是不完整,因为各种缘由存有缺失值。

使用is.na()函数检查缺失值。

> rm(list=ls())

> x <- c(1,2,NA,3)

> is.na(x)

[1] FALSE FALSE TRUE FALSE

数据集中某些变量值 设置为NA

从数据 集中移除缺失值

> rm(list=ls())

> x <- c(1, 2, NA, 3)

> y <- sum(x, na.rm=TRUE)

> x

[1] 1 2 NA 3

> y

[1] 6

> sum(x)

[1] NA

可以使用na.omit()函数删除不完整的观察。

日期值

用函数as.Date()设置日期格式。

日期常用格式如下

%d 1-31

%a Mon

%A Monday

%m 00-12

%b Jan

%B January

%y 14

%Y 2014

> today <- Sys.Date()

> today

[1] “2014-06-17″

> format(today, format=”%B %d %Y”)

[1] “六月 17 2014″

> today <- Sys.Date()

> dob <- as.Date(“1984-11-03″)

> difftime(today, dob, units=”days”)

Time difference of 10818 days

类型转换

类型转换函数如图4所示:

图4:R类型转换函数

> rm(list=ls())

> a <- c(1,2,3)

> a

[1] 1 2 3

> is.numeric(a)

[1] TRUE

> is.vector(a)

[1] TRUE

> is.factor(a)

[1] FALSE

> a <- as.character(a)

> a

[1] “1″ “2″ “3″

> is.numeric(a)

[1] FALSE

> is.character(a)

[1] TRUE

有序数据

使用order()函数

数据集合并

添加列,使用merge()函数或者cbind()

添加行,使用rbind()函数

子数据集

选择变量

移除变量

选择观察

用subset()函数

随机抽样sample()函数

用SQL操作数据框

使用包sqldf中的sqldf()函数基于SQl的查询语句操作数据框。

总结

1操作数据和缺失值。

2明白数据类型转换

3创建和重命名变量

4排序、合并和子数据集

5选择和删除变量

Resource:

1 http://www.wangluqing.com/2014/06/r-in-action-note5/

2 《R in action》第一部分第四章

本栏目文章由PPV课R语言读书会提供,转载请注明来自PPV课R语言读书会。

版权所有,违者必究!

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

本文分享自 PPV课数据科学社区 微信公众号,前往查看

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

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

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