声明:由于是自学的R语言,部分的基础知识写的有些杂乱。但是这都是R的基础操作,个人认为,重点还是在画图,这些都是对数据的分析操作
首先说RStudo导入包的方式
安装好R和RStudo后我们在画图的过程中会需要很多其他的包,那么我们就要去下载导入。
install.packages("包名") 引用包 library(包名)
x <- vector("character",length=10) #创建一个1到10的数组 x1 <- 1:10 x2 <- c("z","x","v","f") x3 <- c(1,2,3,5)
#给X3这个链表命名
names(x3)
x3
#class查看x3的数据类型
class(x3)
#matrix创建矩阵,后面的参数是几维,3行2列
[java] x <- matrix(nrow=3,ncol=2) #给矩阵赋值,按照列填充 x <- matrix(1:6,nrow=3,ncol=2) [/java]
#dim().查看矩阵的维度,attributes()查看矩阵的属性
dim(x) attributes(x)
#创建一个矩阵y,和x的矩阵同维度,实现矩阵的拼接
y <- 1:6 #给y创建一个维度,实现矩阵 dim(y) <- c(2,3) #实现列拼接,行拼接 y3 <- rbind(y,x) y4 <-cbind(y,x)
#创建2维数组
a1 <- array(1:24,dim=c(2,4)) #3维数组 a2 <- array(1:24,dim=c(2,3,4))
#创建一个list,包含多种类型的参数类型
l <- list("a",TRUE,2L,1+2i,2)
#创建数据因子 factor
f <- factor(c("男","女","女","男","女","女")) #排列方式levels f1 <- factor(c("男","女","女","男","女","女"),levels = c("男","女")) #查看根据因子f,以table的形式 table(f) #去掉f的属性 unclass(f)
#NA包含空值的情况is.na(),是空值返回TRUE
n <- c(1,NA,3,4,NA) is.na(n)
#data Frame 数据框
df <- data.frame(科目=c("语文","数学","英语"),score=c(99,78,98)) #data.fram 将数据转换为dataFrame的类型 df1 <- data.frame(id=c(1,2,3,4),score=c(85,548,74,58)) df1 #转换为矩阵 df2 <- data.matrix(df1) class(df2)
#当前时间
d1 <- date() d1 d2 <- Sys.Date() d3 <- as.Date("2015-02-01") weekdays(d3) months(d3) #季节 quarters(d3) #距离17好几年的天数 julian(d3) #time t1<-Sys.time() p <- as.POSIXlt(t1) names(unclass(p)) p$sec p$hour
#数据的获取
x <- 1:10 x[1] x[x<3 | x>4] x[x<7 &x>5] m <- matrix(1:6,2,3) #获取m中第一行第二列的数据 m[1,2] #获取第一行所有列的数据 m[1,]a #包含列名显示,drop=TRUE就是不显示列名 m[1,,drop=FALSE] #创建一个数据集第一列V1,第二列v2 ....,v1,v2,v3代表这一列的名字 df <- data.frame(v1=c(2,5,8,9,6),v2=6:10,v3=11:15) # $后面加上名字,即可获取当前列的数据 df #将V1中的第一个赋值为空 df$v1[1] <- NA df[(df$v2<9 & df$v3>11),] df[which(df$v1<6),] #移除大于8的数据 subset(df,df$v2>=8) #空值的处理 x <- c(1,NA,5,4,NA) #显示x中不为空值的元素 x[!is.na(x)] x <- c(1,NA,5,4,NA) y <- c(1,3,NA,NA,6) #判断两个链表里面都不为空的值为TRUE z <- complete.cases(x,y) #当数据太多时,查看数据的前6行 head(airquality) #查看里面是否存在为空的数据 g <- complete.cases(airquality) #去除空的数据 airquality[g,] #对应相加,数据的处理 x <- 1:5 y <- 6:10 x+y x*y #矩阵的数据处理 x <- matrix(1:4,2,2) y <- matrix(5:8,2,2) #对应位置相乘 x*y #矩阵的方式相乘 x %*% y #随机生成100个平均值为5,方差为0.1的数 x <- rnorm(100,mean = 5,sd=0.1) #计算平均值 mean(x) sd(x) #链表的操作 l <- list(1:10,c(1,4,6,3,2)) names(l) <- c("a","b") #计算l的平均值 lapply(l, mean) #lapply数据统计 x <- 1:4 lapply(x,runif) #runif产生均匀分布随机数 lapply(x, runif,min=0,max=100) x <- list(a=matrix(1:6,2,3),b=matrix(6:11,2,3)) lapply(x, function(t) t[1,]) #sapply,简化lapply的数据结果 sapply(l, mean) x <- matrix(1:10,2,5) apply(x, 2, sum) #mapply函数mapply是函数sapply的变形版,mapply 将函数 FUN 依次应用每一个参数的第一个元素、第二个元素、第三个元素上,rep重复数据 x <- list(rep(1,4),rep(2,3)) x <- mapply(rep,1:4,4:1) air <- split(airquality,airquality$Month) table(airquality$Day) sapply(air, function(x) colMeans(x[,c("Ozone","Wind")],na.rm = TRUE))