4、基本数据管理

1、一个简单的示例

	#通过国内镜像下载,加快速度
	options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) 
	#4.1一个示例
	manager <- c(1,2,3,4,5)
	date <- c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")
	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,gender,
	                       q1,q2,q3,q4,q5)#形成数据框

2、创建新变量

	#操作数据表
	#4.2生成新变量
	#方法一
	leadership$q6=leadership$q4+leadership$q5
	
	#方法二
	leadership<-transform(leadership,q7=q4+q5)

3、变量重编码

	#4.3变量重编码(进行分类)
	#leadership$age[leadership$age==99]<-NA,leadership$age==99为条件
	leadership$age[leadership$age==99]<-NA
	leadership$agecat[leadership$age>50]<-"elder"
	leadership$agecat[leadership$age>=40&leadership$age<=50]<-"middle aged"
	leadership$agecat[leadership$age<40]<-"YOUNG"
	
	#简便写法
	attach(leadership)
	leadership$age[age==99]='none'
	leadership$agecat1[age>50]<-'o'
	leadership$agecat1[age>40&age<50]<-'m'
	leadership$agecat1[age<40]<-'y'
	detach(leadership)
	#另一种写法
	leadership1<-within(leadership,{
	  age[age==99]<-NA
	  agecat[age>50]<-'e'
	  agecat[age>40&age<50]<-'m'
	  agecat[age<40]<-'y'
	})

4、变量重命名

	#4.4变量重命名
	#方法一
	fix(leadership)#直接启动了窗口,进行修改
	#方法二
	names(leadership)[1]<-"manager"
	#方法三
	install.packages("plyr")
	library(plyr)
    leadership<-rename(leadership,c(manager="id",q5="qq5"))

5、缺失值

	#4.5缺失值
	#(1)识别缺失值的函数is.na()
	y<-c(1,2,3,NA)
	
	is.na(y)#判断是否缺失
	
	#(2)重编码某些值为缺失值
	
	leadership$age[leadership$age==99]<-NA
	
	
	#(3)缺失值参与计算怎么样
	y
	z<-y[1]+y[2]+y[3]+y[4]#只要存在缺失值,它们的和就是NA
	Z
	
	Z<-sum(y,na.rm = TRUE)#若含有na就将其remove掉
	Z
	
	#(4)移除含有缺失值的观测(行)
	newdata<-na.omit(leadership)

6、日期值

#4.6日期值#计算账龄
#(1)日期值的读入
mydata<-c("2007-06-22","2017-9-30")
mydata1<-as.Date(c("2007-06-22","2017-9-30"))#日期型可以计算
mydata
mydata1
#(2)日期值的格式(输入的格式)
strDates<-c("01/05/1965","08/16/1975")
mydata2<-as.Date(strDates,"%m/%d/%Y")#75就是%y,1975就是%Y
#(3)系统日期与当前日期
Sys.Date()
date()
#(4)日期值的输出格式
today<-Sys.Date()
format(today,format="%B %d %Y")
#(5)日期值的间隔计算
startdate<-as.Date("1998-7-23")
enddate<-as.Date("2022-2-15")
days<-enddate-startdate#计算过了多少天
days
weeks<-difftime(enddate,startdate,units = "weeks")#按周计算日期
weeks

7、类型转换

	#4.7类型转换
	#(1)is.xxx()函数,用来判断类型
	a<-c(1,2,3)
	class(a)#数据类型
	is.numeric(a)#判断是不是数值型
	is.character(a)
	
	#(2)as.xxx()函数转换成某一类型的数据
	as.character(a)
	is.numeric(a)#判断是不是数值型
	is.character(a) 

8、数据排序

#4.8数据排序,先对性别进行排序,再在性别中对年龄进行排序
leadership1<-leadership[order(leadership$gender,leadership$age),]#按年龄进行排序,记住逗号一定不可以漏掉

9、表的合并

	#4.9表的合并
	leader_a<-data.frame(manager,country,gender,age)
	leader_b<-data.frame(manager,q1,q2,q3)
	leader_b<-leader_b[order(-leader_b$manager),]#降序排列
	#根据主键进行连接(默认主键唯一)
	leadership2<-merge(leader_a,leader_b,by="manager")
	
	#直接横向拼接
	leadership3<- cbind(leader_a,leader_b)

10、数据集取子集

(1)保留数据

	#4.10数据集取子集
	#(1)保留变量
	#方法一:按照行或者列保留
	newdata<-leadership[,c(5:9)]#保留5~9列
	
	#方法二:按照行名进行保留
	#先生成字符串向量
	myvars<-c("gender","country","q5")
	newdata1<-leadership[myvars]
	
	#方法三:按照行名进行保留
	myvars<-paste("q",1:5,sep="")
	myvars
	newdata2<-leadership[myvars]

(2)删除变量

#(2)删除变量
#方法一
newdata<-newdata[c(-4,-5)]

#方法二
newdata$q3=NULL#删除该行
newdata$q2=NA#使得为空

(3)选择数据

	#(3)选入观测(保留行)
	leadership[1:3,]#行的1到3
	leadership[leadership$gender=="M"&leadership$age>30,]
	
	#(4)既保留行又保留列
	newdata3<-subset(leadership,
	                 gender=="M" & age>25,
	                 select = c("manager","gender","age"))

11、使用sql语句

#4.11使用sql语句来操作数据集
options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) 
install.packages("sqldf")
library(sqldf)
a<-mtcars
View(a)

newdf<-sqldf("select*from mtcars where carb=1 order by mpg",row.names=TRUE)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值