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)

new Date() 日期格式处理

console.log("result:"+toHDate(new Date().getTime()/1000).replace(/\:\d\d$/,'')); function toHDate(se...
  • qq_39759115
  • qq_39759115
  • 2017年12月25日 16:09
  • 101

JS-格式化日期y-m-d h:i:s-例子说明

function dateFormat(formatStr, fdate){ var fTime, fStr = 'ymdhis'; if (!formatStr) formatStr=...
  • han_huayi
  • han_huayi
  • 2013年10月30日 10:22
  • 4596

php显示日期(今天、昨天、本周、上周、本月、上月、)

  • qq_38388715
  • qq_38388715
  • 2017年10月25日 16:35
  • 151

js中获取时间new Date()详细介绍

js中获取时间new Date()详细介绍 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); ...
  • cui_shuang_xi
  • cui_shuang_xi
  • 2014年04月28日 13:40
  • 1995

使用date命令获取各种时间

本文转载于:http://www.cnblogs.com/mfryf/archive/2012/03/23/2413362.html 获得当天的日期 date +%Y-%m-%d 输...
  • TODD911
  • TODD911
  • 2013年06月14日 11:13
  • 2733

linux入门之任务计划crontab

crontab介绍 我们时常会有一些定期定时的任务,如周期性的清理一下/tmp,周期性的去备份一次数据库,周期性的分析日志等等。而且有时候因为某些因素的限制,执行该任务的时间会很尴尬。本文同你一...
  • LianChengTongXin
  • LianChengTongXin
  • 2017年03月03日 12:10
  • 165

R语言与格式、日期格式、格式转化

R语言的基础包中提供了两种类型的时间数据,一类是Date日期数据,它不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期、时间和时区信息。一般来讲,R语言中建立时序数据...
  • sinat_26917383
  • sinat_26917383
  • 2016年02月16日 22:12
  • 32251

根据本地/服务器时间获取指定时区时间 new Date指定时区时间

1、代码 function getTimeByTimeZone(timeZone){ var d=new Date(); localTime = d.getT...
  • kongjiea
  • kongjiea
  • 2016年12月09日 11:48
  • 2124

javascript中new Date()的浏览器兼容性问题

引言: 同一种语言javascript,在不同的浏览器中,存在语言兼容性问题,本质上是由于不同的浏览器是支持的语言标准和实现上各有差异。本文将基于new Date来创建Date对象来分析这个问题。...
  • blueheart20
  • blueheart20
  • 2015年04月06日 17:58
  • 19237

new Date 生成日期 火狐返回 Invalid Date

getDateDiff : function(start, end){ //start和end是2006-12-18格式 var aDate, oDate1, o...
  • qianqianyixiao1
  • qianqianyixiao1
  • 2015年12月25日 10:37
  • 1064
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:R 语言-数据处理基础
举报原因:
原因补充:

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