R-数据处理

data.frame( ) 数据框创建mydata <- data.frame(col1,col2,col3,...,stringAsFactors=FALSE)其中col1,col2,col3,... 可为任何类型(如字符型、数值型或逻辑型 。不将字符型数据转为枚举类型
mydata<-transform(mydata,sumx=x1 + x2,meanx=(x1+x2)/2) 用transform在mydata中新增sumx和meanx两列数据
variable[condition] <- expression将仅在condition的值为TRUE时执行赋值
fix(leadership) 弹出修改变量名的窗口
library(reshape)
leadership<-rename(leadership,c(manager="managerID",date="testDate") ) 改变变量
names(leadership)[1]<-"managerID"
is.na() 查找缺失值
na.rm=TRUE 排除缺失值
na.omit() 移除所有含有缺失值的行
as.Date(x, "input_format") x是字符型数据,input_format是读入日期的适当格式
Sys.date() 显示当前日期
format(x, format="output_format")来输出指定格式的日期值
"["(x, 2),就是return向量x的第二个数。 [ 作为R中一个函数使用
cat(. .., file ="myfile",append =FALSE)
连接...中的对象,并将其输出到屏幕上或文件中(如果声明了一个的话)
firstname <- c("Jane")
cat("Hello" ,firstname, "\n")


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()
【数据排序】
newdata<-leadership[order(leadership$age),] 对leadership中的age排序
【数据合并】
添加列:横向合并 total<-merge(data1,data2,by=c("ID","age"))
直接合并不指定索引用cbind(data1,data2)
添加行:纵向合并 rbind(data1,data2)
【剔除变量】
剔除q3,q4
myvars<-names(leadership) %in% c("q3","q4")
newdata<-leadership[!myvars]

newdata<-leadership(-8,-9) 删除第8,第9个数据
【数据选取】
newdata<-subset(leadership,age>35|age<=24,select = c(q1,q2,q3,q4))
【随机抽样】
newdata<-leadership[sample(1:nrow(leadership),3,replace = FALSE),] sample第一个参数代表要从中抽样的元素组成的向量 3代表抽取的元素数量 replace表示无放回抽样
【sql 选取数据】
newsql<-sqldf("select avg(mpg) as avg_mpg,gear from mtcars where cyl in (4,6) group by gear")
【mean(x,trim=0.05,na.rm=TRUE)】 提供截尾平均数,
【生成随机数种子】
runif(n) 生成n个随机数(0~1之间服从均匀分布的伪随机数)
【生成多元正态数据】
MASS包中的mvrnorm(n,mean,sigma) n为样本大小 mean为均值向量 sigma为方差-协方差矩阵
【grep搜索模式】
grep(pattern, x, ignore. case=FALSE,fixed=FALSE)
在x中搜索某种模式。若fixed=FALSE,则pattern为一个正则表达式。若fixed=TRUE,则pattern为一个文本字符串。返回值为匹配的下标grep("A",c("b","A","c"),fixed=TRUE)返回值为2
【提取或替换字符串】
substr(x,start,stop)
【搜索替换】
sub(pattern, replacement, x,ignore.case=FALSE, fixed=FALSE) 在x中搜索pattern,以replacement将其替换。若fixed=FALSE,则pattern为一正则表达式。若fixed=TRUE,则pattern为一个文本字符串
【分割字符串】
strsplit(x, split, fixed=FALSE) y <- strsplit("abc", "")将返回一个含有1个成分、3个元素的列表,包含的内容为"a" "b" "c"
【连接字符】
paste(…, sep="") 连接字符串,分隔符为sep
【大小写转换】
toupper(x) 大写转换 tolower(x) 小写转换
【生成序列】
seq(from, to, by) 生成一个序列 indices <- seq(1,10,2) indices的值为c(1, 3, 5, 7, 9)
【将X重复n次】
rep(x,n)
【cut】
cut(x, n) 将连续型变量x分割为有着n个水平的因子使用选项ordered_result = TRUE以创建一个有序型因子
【切割区间】
pretty(x, n) 创建美观的分割点。通过选取n+1个等间距的取整值,将一个连续型变量x分割为n个区间。绘图中常用
【apply函数】
apply函数的使用格式为 apply (x,MARGIN,FUN,...) :其中,x为数据对象,MARGIN是维度的下标,FUN是由你指定的函数,而...则包括了任何想传递给FUN的参数。在矩阵或数据框中,MARGIN=1表示行,MARGIN=2表示列。
apply(mydata,1,mean,trim=0.2) 计算每行的截尾均值(截尾均值是基于中间60%的数据,最高和最低20%)
【小数点】
options(digits = 2) 小数点的位数为2位
【scale】
1.数据的中心化

所谓数据的中心化是指数据集中的各项数据减去数据集的均值。例如有数据集1, 2, 3, 6, 3,其均值为3,那么中心化之后的数据集为1-3,2-3,3-3,6-3,3-3,即:-2,-1,0,3,0

2.数据的标准化
所谓数据的标准化是指中心化之后的数据在除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差。

scale(data, center=T,scale=T)
scale方法中的两个参数center和scale的解释:1.center和scale默认为真,即T或者TRUE 2.center为真表示数据中心化 3.scale为真表示数据标准化
【分位数函数】 quantile()

【拆分姓名】

name<-strsplit(roster$Student," ")
firstname<-sapply(name,"[",1) [ 代表可以提取某个对象中的一部分的函数
lastname<-sapply(name,"[",2)
roster<-cbind(firstname,lastname,roster[,-1])
roster
【for结构】
for (var in seq) statement
【while结构】
while(cond) statement
【if-else结构】
if (cond) statement1 else statement2
【ifelse结构】
ifelse(cond,statement1,statement2)
【switch结构】
switch(expr,...)
【自定义函数】
myfunction<-function(arg1,arg2,...){
statements
return(object)
}
函数对象只在函数内部使用 返回的数据类型是任意的。
【转置】
t()
【整合数据】
aggregate(x,by,FUN) x是待折叠的数据对象,by是一个变量名组成的列表,FUN是用来计算描述性统计量的标量函数。
eg:aggdata<-aggregate(mtcars,by=list(cyl,gear),FUN = mean,na.rm=TRUE) na.rm=TRUE忽略na值

【融合数据】
library(reshape)
mydata1<-melt(mydata,id=c("id","Time")) 将设置的唯一id作为id,进行数据融合

dfm<-melt(dataframe,measure.vars=y,id.vars=g) dataframe是数据,y是一个向量,指明将要概述的数值型变量,而g是由一个或多个分组变量组成的向量。

【重铸数据】
newdata<-cast(mydata1,x+y~z,mean) mydata1表示原数据,x和y表示留下分类的的数据。z表示将z拆分细类数据,对z进行拆分为多个变量。

posted @ 2017-12-05 11:40  Groupe  阅读(330)  评论(0编辑  收藏  举报