, customer[,-c(10,13,20)] r语言,R语言

第四章 基本数据管理

用到的数据

leadership

mydata

1.stringAsFactor=FALSE  字符不转换为因子(创建数据框选项参数)

a)如: > leadership

2.创建新变量

a)变量名

i.表达式可包含多种运算符和函数

ii.+  -  *  /

iii.X%%Y(求余) X%/%Y(整数除法)

b)以下得到的为独立变量

i.> sumx

ii.> meanx

c)将变量整合的原始数据框中

i.方法1

1.> mydata$sumx

2.> mydata$meanx

ii.方法2(绑定数据框,简化代码)

1.> attach(mydata)

> mydata$sumx

> mydata$meanx

> detach(mydata)

iii.方法3(使用 transform() )

1.> mydata

3.变量的重编码

a)逻辑运算符

i.  >=  ==(严格等于)  !=(不等于)  x|y(x或y)  x&y(x和y)

ii.isTRUE(x)  测试x是否为TRUE

b)实例

i.将leadership中的年龄(99)替换为NA,年龄99为错误值

1.leadership$age[leadership$age == 99]

ii.将leaderhip中age(连续型变量)重新编码为类别型变量 agecat

1.“Elder”: age >= 66; “Middle Aged”: age >40 & age <66;  “Young”: age >= 18 & age <=40;

2.方法1

a)> leadership$agecat[leadership$age > 66]

> leadership$agecat[leadership$age > 40 & leadership$age <66]

> leadership$agecat[leadership$age >= 18 & leadership$age <= 40]

3.方法2  使用 within()

a)> leadership

agecat[age>=66]

agecat[age>40 & age<66]

agecat[age>=18 & age<=40]

c)程序包中的变量重编码函数

i.car包中的 recode()

1.可以重编码数值型,字符型,向量或因子

ii.doBy包中的 recodevar()

iii.R中自带的 cut()

1.可以将一个数值型变量按值域切割为多个区间,并返回一个因子

4.变量的重命名

a)交互式修改,编辑器

i.fix(object)

b)编程方法

i.names()

ii.实例

> names(leadership)[2]

>names(leadership)[1:5]

leadership 第一到五列分别重名为 item1,…,item5

c)Plyr包中的 rename() 函数

i.> rename(dataframe, c(oldname=”newname”,oldname=”newname”,……))

5.缺失值 NA

a)NA (Not Avaliable) 在R中数值型和字符型缺失值都用NA表示

i.缺失值NA判断:is.na(object)

b)在R中,无限的或者不可能出现的数值不标记为缺失值NA

c)可使用赋值语句将某些值重新编码为缺失值(如将leadership中年龄99编码为缺失值)

i.正无穷大:+∞  识别: is.infinite()

ii.负无穷大:-∞    识别: is.infinite()

iii.不可能出现的值(如2/0):NaN  识别:is.nan()

d)na.rm=TRUE 大多数数值型函数都有此选项,移除缺失值,并使用剩余值进行计算

e)na.omit(  )  移除所有含有缺失值的观测(行),缺失值较少或较集中时使用

6.日期值

a)日期值通常以字符串(character)形式输入到R中,然后转化为以数值(numeric)形式存储的日期变量

b)as.Date() 用于执行这种转化

i.as.Date(x, “input_format”)  x:字符型向量  input_format:读入日期的格式

ii.日期值的默认读入格式为:yyyy-mm-dd (如:2018-01-22)

> mydate

因为“2018-01-18”,”2018-01-22”与默认格式相同,直接读入即可

c)日期格式

符号含义实例

%d两位数表示的日期(01-31)01 - 31

%a缩写的星期名周一

%A非缩写的星期名星期一

%m两位数表示的月份(00-12)00-12

%b缩写的月份一月

%B非缩写的月份一月

%y两位数的年份18

%Y四位数的年份2018

d)实例:读入日期 “01/05/1991””12/05/1992”

i.> date

> dates

e)日期函数

i.Sys.Date() 返回当天日期 如:”2018-01-18”

ii.date() 返回系统当前时间戳 如:”Thu Jan 18 22:11:14 2018”

f)format()

i.format(x, format=”output_format”)

ii.format() 可接受一个参数,并按某种格式输出结果,可用于提取日期值中的某些成分

iii.实例

1.> today

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

[1] "一月182018"

> format(today, format=”%A”

[1] "星期四"

iv.R的内部在存储日期时,是使用自1970年1月1日以来的天数表示的,更早的日期用复数表示

1.因此日期值可以执行算术运算

2.可使用 difftime() 来计算时间间隔

a)difftime(x1, x2, units=”days”)

b)units: weeks days hour mins secs

c)实例:计算 Evan 与 HR 生日相差天数

> HR

> Evan < c(“1991-10-08”)

> difftime(HR, Evan, units=”days”)

Time difference of 447 days

7.将日期转换为字符型变量(character)

a)as.charavter()

i.> strDates

b)进行转换后,即可使用一系列字符处理函数(如:取子集,替换,联接等)

c)查看帮助: help(as.date)  help(strftime)

d)日期和时间格式: help(ISOdatetime)

e)相关包: lubtidate包  timeDate包

8.数据类型转换

a)数据类型

数据符号数据类型

numeric数值

character字符(需带””)

vector向量

matrix矩阵

data.frame数据框

factor因子

logical逻辑值

b)数据类型转换函数

判断转换

is.numeric()as.numeric()

is.character()as.character()

is.vector()as.vector()

is.matrix()as.matrix()

is.data.frame()as.data.frame()

is.factor()as.factor()

is.logical()as.logical()

is.datetype()as.datetype()

返回逻辑值 TRUE或FALSE将参数转化为对应的数据类型

9.数值排序

a)order()

i.可对一个数据进行排序(默认为升序,在变量前加减号-即可得到降序结果)

ii.实例

> newdata1

> attach(leadership)

> newdata2

> newdata3

> detach(leadership)

10.数据集的合并

a)向数据框(data.frame)添加列(变量)和行(观测)的方法

b)横向合并,向数据框添加列(变量)

i.横向合并两个数据框(集),即内联结(inner join),merge()

1.merge(x1, x2, by=”c”)

2.x1 x2为数据集,”c”为公共索引(键)

3.实例

> total1

> total2

ii.直接合并两个数据框或矩阵(不需要公共索引),cbind()

1.> total

a)对象A,对象B必须拥有相同的行数

b)且对象A,对象B以同顺序排序

c)纵向合并,向数据框添加行(观测),rbind()

i.> total

ii.dataframeA  dataframeB 必须拥有相同的数量

1.若dataframeA  dataframeB变量不同

a)删除多余变量

b)追加变量

11.数据集取子集

a)选入(保留)变量

i.dataframe[row indices(行数), column indices(列数) ]

> newdata

> myvars

> newdata

ii.paste()字符连接函数

1.> myvars

> newdata

b)删除(丢弃)变量

i.> myvars

> newdata

# names(leadership) 生成了一个含有leadership所有变量名的字符型向量

#names(leadership) %in% c(“q3”,”q4”),返回一个逻辑型向量,names(leadership中每个匹配q3或q4的元素的值为TRUE,反正为FALSE

# !myvars 反转myvars 逻辑值

# newdata

c)选入观测(行)

i.> newdata1

ii.> newdata2 30,]

iii.> attach(leadership)

> newdata3 30, ]

>detach(leadership)

iv.限定时间

> leadership$date

> startdate

> enddate

> newdata = startdate & leadership$date <= enddate), ]  #选取满足要求的日期

v.subset()

1.使用subset() 函数是选择变量和观测的简单方法

2.>newdata1=35|age<24, select=c(q1,q2,q3,q4,q5))

>newdata2 25,

select=gender:q4)

d)随机抽样

i.sample() 可以从数据集中(有放回(raplace=TRUE)或无放回(repalce=FALSE)地抽取一个大小为n的随机样本

1.> mysample

ii.sampling包:抽取和校正调查样本

iii.survery包:分析复杂调查数据

iv.自助法,重新抽样统计方法

12.使用SQL语句操作数据框

a)SQL: Structured Query Language 结构化查询语言

b)需要安装 sqldf 包: install.packages(sqldf)

i.实例1

> library(sqldf)

> newdf

row.names=TRUE)  #row.names=TRUE 延用原始数据框行名

ii.实例2

> sqldf(“select avg(mpg) as avg_mpg, avg(disp) as avg_disp, gear from

mtcars where cyl in (4,6) group by gear”)

你可能感兴趣的:(customer[,-c(10,13,20)],r语言)