R 语言-数据处理基础

原创 2016年05月31日 14:33:30

data.csv


seller.csv


###########安装包###############
#install.packages("lubridate")  包含month()
#install.packages("reshape")  包含reshape()
library(lubridate)   #?如何查找函数在哪个包
library(reshape)
install.packages("RMySQL")

#########工作空间配置##############
setwd("E:\\work\\R培训")  #可以用 / or \\
getwd()
dir.create("name")
setwd("name")
setwd("..")  
########数据输入##############
data<-read.csv("data.csv",stringsAsFactors=FALSE)
seller<-read.csv("seller.csv",stringsAsFactors=FALSE)
data
head(data)  #tail(data)
str(data)
summary(data)
nrow(data)
ncol(data)
typeof(data$name)
########类型转换##########
data$ID<-as.character(data$ID)  
#转换:as.character() as.numeric() as.data.frame() as.factor()
#判断:is.character() is.numeric() is.data.frame() is.factor()

########变量重命名######
names(data)[2]<-"product"       #colnames(data) rename()

########创建新变量############
data$money<-data$quantity*data$price  
# + - * / ^ %% 
#sum() abs() sqrt() mean() max() etc.
########缺失值处理############
data$quantity[is.na(data$quantity)]<-0 # not available
data$quantity[data$quantity==0]<-NA    
sum(data$quantity,na.rm=TRUE)  #na.rm=TRUE,计算之前移除缺失值

########条件赋值############
data$pricecat<-data$product
data$pricecat[data$price<100]<-"cheap"
data$pricecat[data$price<1000 & data$price>=100]<-"expensive"
data$pricecat[data$price>=1000]<-"very exp"
#逻辑运算符:==  != <>  &  |  

########数据集合管理############
#1.选取子集 2.数据集合并

#1.选取子集
#列
newdata<-data[c("quantity","price","money")]
newdata<-data[,4:6]
data$ID<-NULL   #删除,NULL与NA的区别
#行
newdata<-data[2:3,]
#条件
newdata<-data[which(data$pricecat=="cheap" & data$quantity>20),]
data$pricecat=="cheap"
which(data$pricecat=="cheap")     #which 返回数组下标
which(data$quantity>20)
which(data$pricecat=="cheap" & data$quantity>20)
which(data$pricecat=="cheap" | data$quantity>20) 
data[which(data$name %in% c("cup","bag")),]  # x %in% c()

newdata<-subset(data,pricecat=="cheap" & quantity>20)
#随机抽样(略)
mysample<-data[sample(1:nrow(data),3,replace=FALSE),]

#2.数据集合并
#列 merge() or cbind()
A=data
B=seller
merge(A,B,by="product")  #多个联结变量:by=c("product","ID")
#行 rbind()
rbind(A,B)
A=data[2:3,]
B=rev(data[3:5,])
rbind(A,B)
#必须拥有相同的变量,顺序可以不一致

#######数据排序#############
data<-data[order(-data$money,data$price),]
data$rank<-rank(data$cash)
#######  函数   ###############
#1.数学统计函数 2.字符处理函数 3.日期函数 4.其他常用函数 5.自编函数(略)

#1.数学统计函数(P83)
#数学:abs(x) sqrt(x) ceiling(x) floor(x) round(x,n) etc.
#统计:sum() mean() median() range() var() sd()

#2.字符处理函数
#nchar(x) substr(x,start,stop) sub(pattern,replacement,x) etc.
nchar('abcd')
nchar(c("1","3as","egty"))
length(c("1","3as","egty"))
length(data$name)
substr("abcdefg",3,6)
sub("a",".","maosiyuan")
gsub("a",".","maosiyuan")
strsplit("abc","")
paste("a","b","c",sep="_")
#大小写字符转换?

#3.日期函数
#字符串转日期
as.Date("2016-04-15") #默认yyyy-mm-dd
as.Date("15/04/2016","%d/%m/%Y")
as.Date("20160414","%Y%m%d")  #日期格式参见P73
ymd("20160414")

typeof(data$date)
as.Date(data$date,"%Y/%m/%d")
#日期转字符串
mydate<-as.Date("15/04/2016","%d/%m/%Y")
as.character(mydate)
gsub("-","",as.character(mydate))

month(mydate)   #year() day()

date()
Sys.Date()
format(Sys.Date(),format="%y")
as.Date("2016-04-15")-as.Date("2016-04-01")
difftime(as.Date("2016-04-15"),as.Date("2016-04-01"),units="hours") 
   #units:"secs", "mins", "hours","days", "weeks",不包含months years
as.numeric(as.Date("2016-04-15")-as.Date("2016-04-01"))
#4.其他常用函数
unique(data$date)  #去重
which()            #返回数组下标
which.max(data$money)
rev(data)  #反转列顺序
t(data)    #转置
match("a",c("n","s","a","d"))  #可实现Excel的vlookup功能,案例如下
seller
data
data$seller_name<-seller[match(data$product,seller$product),2]
#5.自编函数(略)
myfun<-function(x){
  if(x<100){
    result<-"cheap"
  }else if(x<1000){
    result<-"expensive"
  }else{
    result<-"very expensive"
  }
    return(result)
}
myfun(15)

###########透视表#######
seller
table(seller$name)  #计数
seller_new
aggregate(seller[,3:4],by=list(seller$name),FUN=sum,na.rm=TRUE)
#aggregate(目标值,分组变量,统计函数)

############数据集调整###########
seller
melt_data<-melt(seller,id=(c("name","product"))) #把不在id中的指标折叠起来
cast(melt_data,name~variable,sum)  #把cast(data.row~column)的column指标展开
cast(melt_data,name+product~variable)

#case
q1<-read.csv("Q1.csv",stringsAsFactors=FALSE)
str(q1)
subq1<-melt(q1,id=c("产品名称","下单渠道"))
head(subq1)
colnames(subq1)<-c("product","channel","variable","value")
subsubq1<-cast(subq1,product~channel+variable)
head(subsubq1,1)

相关文章推荐

R语言可视化---介绍一些强大的画图和数据处理包及函数(ggplot,melt())

最近实习中需要R语言做分析,对于最后的结果需要用如下所示的图进行展示(示例图片在论文中截取)           由于接触R语言不久,刚开始就是各种懵,认为直接用R是画不出这样的图片的,然后问了同...

R语言︱非结构化数据处理神器——rlist包

本文作者:任坤,厦门大学王亚南经济研究院金融硕士生,研究兴趣为计算统计和金融量化交易,pipeR,learnR,rlist等项目的作者。 近年来,非关系型数据逐渐获得了更广泛的关...

【数据处理】R语言--data.table介绍以及例子

R—-data.table包介绍学习 相比dplyr包,data.table包能够更大程度地提高数据的处理速度,这里就简单介绍一下data.tale包的使用方法。 data.table:用于快速处...

R语言之数据处理难题的一套解决方案

用R进行数据处理来源:现在有这样一些数据:期末考试结束后,学生各科成绩出来了,如何对学生进行评级并将评级结果排序展示?通过以下用R来实现的解决方案,不仅可以学习到R语法相关知识,还能学习到数据处理的思...

[2]R语言在数据处理上的禀赋之——可视化技术

R语言在可视化上可谓非常出众,想必这也是为什么R语言在数据处理方面受到追捧的原因之一。上一节已经大体了解了R语言的基本数据类型,以及优势所在。R的可视化技术同样也是优势大大滴。这也是R的数据类型为可视...

R语言__数据处理2列表

列表     R语言中的列表与向量不同,在单个向量中所存放的数据类型必须一致,而列表却不同,它可以组合多种不同类型的对象,且列表的每一个组件可以是不同的长度。     1.创建列表:       ...

用R语言抓取豆瓣前250名的影片评分,并利用正则表达式进行数据处理

用R语言抓取豆瓣前250名的影片评分,并利用正则表达式进行数据处理

【数据处理】R语言--data.table包使用总结

首先下载安装data.table包 install.packages("data.table") library(data.table) 利用fread函数导入数据,在data.table...

R语言___数据处理1向量

一.向量 1.构造向量    在R语言里,通过函数c来建立一个向量。(注意:向量内的数据类型必须一致。)     example:a    (1)查看向量的类型,用mode(向量名)      (2...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:R 语言-数据处理基础
举报原因:
原因补充:

(最多只允许输入30个字)