-
总结数据信息:#默认前六行或者后六行 head(airquality, 10)#查看前10行 tail(airquality, 10)#查看后10行 summary(airquality)#总结,数据分布整体把握 str(airquality)#以简洁方式对数据总结 table(airquality$Month)#对列进行频数统计 table(airquality$Ozone, useNA = "ifany")#将Ozone中NA的数值统计出来 any(is.na(airquality$Ozone))#判断是否有缺失值,true是有缺失值 sum(is.na(airquality$Ozone))#统计缺失值数量 all(airquality$Month < 12)#查看是不是所有的月份都小于12 #将Titanic强制转换为数据框 t <- as.data.frame(Titanic) x <- xtabs(Freq ~ Class + Age, data = t)#按照Class和Age生成交叉表 ftable(x)#扁平化显示 object.size(airquality)#查看对象大小 print(object.size(airquality),units="Kb")#按照kb显示大小
查看全部 -
#对数据进行排序
#sort返回排好序的内容
#order返回下标
x <- data.frame(v1=1:5, v2=c(10,7,9,6,8), v3=11:15, v4=c(1,1,2,2,1)) sort(x$v2)
sort(x$v2,decreasing = TRUE)
order(x$v2) #返回的不是内容本身,是内容的下标
x[order(x$v2),] #对x针对v2进行排序
x[order(x$v4, x$v2, decreasing = TRUE), ]
查看全部 -
split
#根据因子或者因子列表将向量或其他对象分组
#通常与lapply一起使用
#参数格式:split(向量/列表/数据框,因子/因子列表)
x <- c(rnorm(5), runif(5),rnorm(5,1))
f <- gl(3,5) split(x,f) lapply(split(x,f), mean)
lapply(split(x,f), sum) head(airquality) split(airquality,airquality$Month)#按照month分组查看
s <- split(airquality,airquality$Month)
table(airquality$Month)#查看每个Month下包含的记录数
lapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))# 求平均值
sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))#简化显示结果
sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")],na.rm = T))#处理缺失值
查看全部 -
tapply:对向量子集进行操作。
根据因子列表,每个水平下的元素个数来对向量进行划分(比如有三个水平,每个水平有4个数,就是将向量分成3组,每组4个数),对每组运行函数。
tapply(向量,因子/因子列表,函数/函数名)
因子的创建可通过函数:因子名 <- gl(因子包含的水平数,每个水平下有多少个元素)
查看全部 -
mapply:
lapply的多远版本
mapply(函数/函数名,数据,函数相关的参数) #相当于多次运行这个函数
list(rep(1,4),rep(2,3),rep(3,2),rep(4,1))可简化为mapply(rep,1:4,4:1)
R语言定义函数:
函数名 <- function(参数列表){
函数体
}
查看全部 -
apply:沿着数组的某一维度处理数据。
apply(数组/矩阵,维度,函数/函数名),维度是选择哪个维度,可以用c()
行求和:rowSums(x) 行求平均:rowMeans(x) 列求和:colSums(x) 列求平均:colMeans(x) 这四个函数在用于单纯行\列操作效率比apply高
rnorm(num):随机从正态分布中取num个数据
quantile:求数据的百分位点,可通过probs=c()进行分配
查看全部 -
处理循环:R中不仅有for/while循环语句,还有“一句话”函数。
排序
总结数据信息
lapply:可以循环处理列表中的每一个元素。
lapply(列表,函数/函数名,其他参数),返回值总是一个列表。
lapply(x,mean) #对x中的元素求平均,若x不是列表,会被强制转换为列表
lapply(x,runif) #从均匀分布的总体里抽取元素数值个0-1的随机数
lapply(x,runif,min=0,max=100) #抽取出大于0小于100的随机数 min、max作为runif的参数传入
函数可以自定义,即匿名函数形式: function(参数) 操作
注意:传进来的参数是列表中的每个元素(是下一级的)。
sapply与lapply操作相同,但是是对lapply进行简化,若结果列表中元素个数均为1,返回numeric向量;若结果列表元素个数相同且大于1,返回矩阵。
str()参数为R对象,将其以一种整洁紧凑的形式显示出来。可以用来函数对象需要哪些参数
查看全部 -
向量化操作:可以作用于向量、矩阵等结构,使得代码简介、易于阅读、效率高。
向量、矩阵之间的加减乘除是依次对应的元素之间做加减乘除。
矩阵之间进行矩阵乘法:矩阵1 %*% 矩阵2
rep(num1,num2) #num1重复num2次
查看全部 -
x[!is.na(x)] #返回不是缺失值的元素
complete.cases() #()内为两个向量对应的元素都不是缺失值的才为TRUE,否则返回的向量中都为FALSE
library(datasets) #得到R的数据集
head(数据集) #返回数据集前六列的数据
可通过g <- complete.cases(数据集) 返回每条数据是否含有缺失值的向量
数据集[g,][1:10,] #表示不含有缺失值的,所有变量都显示,显示第1到第10行,显示所有列。因为g是向量,所以可以用来选择行,即选择哪些数据
查看全部 -
列表的子集:
可通过[],填写标号或名称,无法直接得到元素的内容,而是元素的名字和内容。
要想只得到元素的内容,可以用[[]]或列表名$元素名。
想获得嵌套列表中的内容时,可通过[[]][[]]或者[[c()]]获得。
不完全匹配:列表名[["不完全元素名",exact=FALSE]]或者直接$不完全元素名 #关闭不完全匹配,只能唯一标识的
查看全部 -
数据框的子集:
数据框名$列名[编号或c()] #获取数据框中的元素,或者用于矩阵相同的方法获取元素。
通过"数据框名$列名"来返回对应的向量。
which()返回的是判断语句中为真的对应的下标,而不用which()返回的是TRUE和FALSE构成的向量
subset(向量矩阵数据框名,构建子集的条件) #可对应所有类型的数据
查看全部 -
x <- matrix(1:6, nrow=2, ncol=3)
x[1,2]#返回指定坐标向量
x[1,]#返回指定行的向量
x[,2]#返回指定列的向量 x[1,c(1,3)]#返回指定行中特定列的向量
x[1,2]#返回integer向量
x[1,2,drop=FALSE]#不返回向量, 而返回返回矩阵
查看全部 -
构建子集:
原始数据->预处理后的数据。原始数据通过预处理得到想要操作的数据。
向量的子集
基本方法:
[]:提取一个或多个类型相同的元素。类似于索引操作,但下标从1开始。[1:5]提取第1个到第5个元素。可在[]加上判定条件,如x[x>5],通过x>5返回每个元素与5比较大小后的真值,然后提取出x中为TRUE的元素。&并且,|或者。也可在[]输入元素对应的名字,名字要加""。
[[]]:从列表或数据框中提取元素
$:按名字从列表或数据框中提取元素 对于向量,直接用向量名加上判定条件,是对向量中的每个元素都进行判断,并返回每个元素对应的真值。
查看全部 -
5种对象类型小结:
查看全部 -
日期与时间:
-日期:Date,是距离19700101的天数
获取当前系统的时间:date() #是字符型
获得日期类型的数据:Sys.Date() #是Date类型
将字符串转变为Date类型:as.Date("yyyy-mm-dd")
获取星期:weekdays(Date类型变量名字)
获取月份:months(Date类型变量名字)
获取季度:quarters(Date类型变量名字)
获取距离1970-01-01的天数:julian(Date类型变量名字)
Date类型之间可以进行运算,相减就是相差的天数,通过as.numeric()来转变为数值类型
-时间:POSIXct/POSIXlt,是距离19700101的秒数
POSIXct:整数,常用于存入数据框
POSIXlt:列表,还包含星期、年、月、日等信息
获取当前系统时间:Sys.time() #是POSIXct类型
通过names(unclass(POSIXlt类型变量名))获取存储的信息。
通过"POSIXlt类型变量名$信息"获得,比如p$sec
时间的模式存储strptime
通过as.来进行变量类型转换
查看全部
举报