R语言快速入门上手
导言:
较早之前就听说R是一门便捷的数据分析工具,但由于课程设计的原因,一直没有空出足够时间来进行学习。最近自从决定本科毕业出来找工作之后,渐渐开始接触大数据行业的技术,现在觉得是时候把R拿下了;用了3天时间,除了对R先有一个大概认识之外,也着手敲指令。由于计算机专业的底子还不错,而且先后接触过不下10种编程语言,感觉R语言入门上手还是挺简单的。下面是自己汇总的一些简单入门代码供大家参考,感兴趣的朋友也可逐行敲打测试。
- 1. 介绍变量、顺序结构、分支结构、循环结构、函数使用、获取帮助等知识
1 #---这是注释--- 2 #R变量类型及赋值 3 x <- 1.12;print(x) 4 y <- c(1,2,4,3);print(y) 5 z <- c("Dog","Pig","Cat");print(z) 6 v <- c(T,F,T,T) print(v) 7 8 "Me" -> I 9 "Her" -> H 10 11 #assign赋值函数 12 assign("t",123);print(t) 13 14 Me <- 'You' 15 assign(Me,123);print(You) 16 17 #cat()函数多数据输出 18 cat("x=",x,"\n") 19 20 #ls()显示当前工作环境所有变量及函数 21 ls() 22 #ls.str()函数查看当前工作环境变量及函数的详细属性 23 ls.str() 24 25 26 27 #rm()删除指定变量或函数 28 rm(x) 29 #rm(list=ls())删除全部,慎用! 30 31 #-------------------------- 32 33 34 #分支语句:if ,else ,ifse 35 x <- 5 36 if(x>0) print("正数") 37 38 x <- 1 39 if(x==1) print("x=1") 40 41 score <- 89 42 if(score >= 90 ){ 43 print("A") 44 }else if(score >= 80){ 45 print("B") 46 }else if(score >= 70){ 47 print("C") 48 }else if(score >=60){ 49 print("D") 50 }else { 51 print("不及格") 52 } 53 54 #switch 条件分支,跟C语音类似 55 x <- 2 56 switch(x, 57 print("Choice 1"), 58 print("Choice 2"), 59 print("Choice 3") 60 ) 61 62 63 #循环语句for,while,repeat 64 s <- 0 65 vars <- 1:10 66 for(i in vars){ 67 s <- s+i 68 } 69 print(s) 70 71 sum <- 0 72 i <- 1 73 while(i<=10){ 74 sum <- sum+i 75 i <- i+1 76 } 77 print(sum) 78 79 #-----------------
- 2. 介绍向量、数组、列表、数据框、日期时间等数据结构的基础知识,以及生成这些结构的方法
1 #向量 2 x0 <- c(1,2,3,4,5);print(x0) 3 x1 <-1:10;print(x1) 4 5 x2 <-seq(from=1,to=10);print(x2) 6 7 #seq()修改步长by=2 8 x3 <- seq(from=1,to=20,by=2);print(x3) 9 #seq() 等分为length.out 份 10 x4 <- seq(from=1,to=100,length.out=25);print(x4) 11 12 13 y1 <- rep(1,10);print(y1) 14 y2<-rep("Hey",3);print(y2) 15 16 #sample()抽样函数 17 y3 <- sample(x=1:100,size=10,replace=F);print(y3) 18 y4 <- sample(x=c(0,1),size=10,replace=T);print(y4) 19 20 #正态分布随机函数rnorm() 21 z1 <- rnorm(n=10);print(z1) 22 z2 <- rnorm(n=10,mean=100,sd=20);print(z2) 23 24 #日期标准化转换as.Date() 25 D <- "1993-1-01" 26 A <- as.Date(D);print(A) 27 28 29 #一维、多维数组 30 t1 <- 1:20 31 dim(t1)<-c(5,4) 32 print(t1) 33 34 t2 <-array(rnorm(40,10,5),dim=c(5,4,2)) 35 print(t2) 36 print(length(t2)) #所有元素总数量 37 38 #数据框data.frame 39 df <- data.frame(Sname=c("Zhu","Lin","Li"),Sage=c(17,19,20),Ssex=rep("Boy",3)) 40 df 41 print(class(df)) 42 43 #列表list 44 li <- list(Sname=c("Chen","Zhu","Lin","Li"),Sage=c(17,19,20),Ssex=rep("Boy",4)) 45 li 46 print(class(li)) 47 48 49 #--------------------
- 3. 介绍R提供了极其灵活的方式,访问、修改、向量、列表、数据框等数据结构,以及R中很多重要、常用的数据分析函数
1 #3-1访问向量元素 2 3 x <- 1:10;print(x) 4 print(x[2]) 5 print(x[-5]) 6 print(x[1:3]) 7 print(x[1:5 * 2]) 8 print(x[c(1,2,5)]) 9 print(x[x>5]) 10 print(x[x > mean(x)]) 11 12 names(x)<-LETTERS[1:10];print(x) 13 print(y["C"]) 14 View(y) 15 16 #修改指定位置的向量元素值r 17 z <- 1:10;print(z) 18 z[5]<-100;print(z) 19 20 z1<-1:10;print(z1) 21 z1<-c(x,11,12,13);print(z1) 22 23 z1[length(z1)+1] <- 11;print(z1) 24 25 #----------------------- 26 27 28 #列表list 29 li <- list(Sname=c("Chen","Zhu","Lin","Li"),Sage=c(17,19,20),Ssex=rep("Boy",4)) 30 li 31 32 print(li$Sname) 33 print(li[[1]]) 34 print(li$Sage[1]) 35 36 names(li) 37 li$SDate <- as.Date(rep("2014-12-12",4)); 38 names(li) 39 40 41 #在列表任意位置添加一个新元素 42 z <- list(Sheight=c(172,170,178,180)) 43 li <- append(li,z,after=0) 44 45 names(li) 46 47 #删除列表中的指定项 48 li$Sage <-NULL 49 names(li) 50 51 52 #----------------------- 53 #矩阵访问 54 55 data(EuStockMarkets) 56 print(head(EuStockMarkets)) 57 print(class(EuStockMarkets)) 58 print(summary(EuStockMarkets)) 59 60 View(EuStockMarkets) 61 62 rowTotal <- rowSums(EuStockMarkets) #矩阵内部必须全数值 63 EuStockMarkets <- cbind(EuStockMarkets,rowTotal) 64 colTotal <-colSums(EuStockMarkets) 65 EuStockMarkets <- rbind(EuStockMarkets,colTotal) 66 67 print(tail(EuStockMarkets)) 68 69 #访问数据框 70 #数据框data.frame 71 df <- data.frame(Sname=c("Zhu","Lin","Li"),Sage=c(17,19,20),Ssex=rep("Boy",3)) 72 df 73 print(df[1,]) #访问第一行 74 print(df[,2]) #访问第二列 75 76 print(df$Sname) 77 78 #当需要频繁访问某一个数据框时,可以使用attach()加载到搜索框 79 80 attach(df) 81 82 print(Sage) 83 print(Sname) 84 print(Ssex) 85 detach(df) 86 ls() 87 88 #-------------------------
1 #3-2 R语言基本分析函数 2 ls.str() 3 4 x<-1:100 5 #查找最大、最小及平均值 6 #print(which,max(x)) 7 #print(which,min(x)) 8 9 print(mean(x)) 10 print(max(x)) 11 print(min(x)) 12 13 w <- c(2,3,5,1,4,2,5,11,3) 14 print(sort(w)) 15 print(sort(w,decreasing=T)) #降序排列 16 17 #日期字符串向量 18 szDate <-c("2014-3-18","2014-03-1","2014-01-01","2013-01-02","2011-04-14") 19 t <- as.Date(szDate) 20 t <- sort(t);print(t) 21 22 #反序排序rev()函数 23 x <- c(1,2,34,3,55,34,2,4,1) 24 print(x);print(rev(x)) 25 26 print(t);print(rev(t)) 27 28 #获取‘游程’信息rle() 29 x1 <- c(1,-1,1,1,-1,-1,1,1,1,1,1,1) 30 y1 <- rle(x1) 31 print(mode(y1)) 32 str(y1) 33 34 35 x2 <- rnorm(10,10,5) 36 print(x2) 37 breaks <- c(-20,-10,0,10,20) 38 y2 <- cut(x2,breaks) 39 print(summary(y2)) 40 41 #match() 匹配函数 42 x3 <- c(2,5,1,4,6,4,3) 43 print(match(x,4)) 44 print(match(x,c(4,5))) 45 46 #计算组合数、排列数 47 print(choose(5,2)) 48 print(choose(30,10)) 49 print(factorial(10)) 50 print(factorial(3)) 51 52 #符号函数sign(),只有1,-1,0 53 cat("sign()函数运算结果:",sign(0),",",sign(2.13),",",sign(-1.2),"\n",sep="") 54 55 56 x4 <- c(1,2,NA,2,3,4,2,NA,7,9) 57 y4 <- na.omit(x4);print(y4) 58 59 dim(x4)<-c(2,5) 60 print(x4) 61 print(na.omit(x4)) 62 63 64 x4 <- c(1,2,NA,2,3,4,2,NA,7,9) 65 y4 <- na.omit(x4);print(y4) 66 #检测数据是否包含NA 67 na.fail(x4); 68 na.fail(y4); 69 70 #去除重复数据 71 x4 <- c(1,2,NA,2,3,4,2,NA,7,9) 72 print(unique(x4)) 73 74 #subset()子数据集筛选函数 75 v1 <- subset(airquality, Temp > 80, select = c(Ozone, Temp)) 76 v2 <- subset(airquality, Day == 1, select = -Temp) 77 v3 = subset(airquality, select = Ozone:Wind) 78 #查看数据 79 head(v3) 80 81 82 #-------------------------
结语:
怎么样?是不是很easy!当然,这只是R语言入门上手的第一part,后续有待更新。。。
-------- 以上内容纯属个人学习总结,不代表任何团体或单位。若有理解不到之处请见谅!---------