R语言基础

R语言学习

工作目录设置

setwd(): 设置当前工作目录,数据和程序都将保存到该目录下

getwd(): 显示当前目录

安装包调用:install.package(“包名”) 等价于 library(包名)

ls(): 显示内存中的对象

ctrl + L: 清屏

rm(): 删除内存中的对象,包括变量、数据框、函数等

options(digits=): #显示小数位数,默认为7,全局。(round(value, 4) #显示4位小数,局部。)

注释

单行注释: 用一个’#’;

大段注释: if(FALSE){ 代码 }

输入数据

★ R 语言对大小写敏感!!!

  1. 用向量函数c命令直接输入

    X = c(164,162,186)

  2. 读取文件

● 文本数据(.txt)或者某个网页上的文件:

read.table(filename, header=T), header=T用来指定第一行是标题行。

read.table(文件网址)

● 表格(.xlsx, .csv):

read.csv(filename)
  1. 读取其他统计软件数据

    首先要调用foreign包:library(foreign)

    例如:read.spss(“SPSS数据文件名”)

数据形式

数据类型

数值型(默认为双精度)、字符型(单引号或双引号均可)、逻辑型(T/F)、日期型、缺省值(NA,任何NA的运算结果都是NA)。

数据对象

  1. 向量(vector)

● 利用c()函数;赋值符号:<- 或者 -> 或者 =。也可用assign()函数对向量赋值:assign(“w”, c(1,2)) # w=[1,2]

● 常见的正则序列,可以用”:”符号。

i = 1:9	  # 1,2,3,4,5,6,7,8,9

i = 9:1   # 9,8,7,6,5,4,3,2,1

● 利用seq()函数产生有规律的序列: seq(起始值, 终止值, by=)(by表示步长),当步长=负数时,降序; 若要固定数列长度: seq(起始值, 终止值, length=长度)或者seq(起始值, by=,length=)

● rep(x, times):x表示要重复的对象,times是重复的次数。

● length():返回向量长度; mode():返回向量的数据类型

  1. 因子(factor)

    分类型数据经常要把数据分成不同的水平或因子。比如性别分为男、女两个因子。

    生成因子:factor(data,[levels, labels, …]), levels是因子水平向量,labels是因子的标签向量,可选。

    可以用函数levels()列出因子水平。

  2. 矩阵(matrix)

● matrix(data=NA, nrow=1, ncol=1, byrow=FALSE, dimnames=NULL)

data是必须,其他可选,nrow表示行数,ncol表示列数,byrow默认表示按列排列,dimnames用于更改行列名。

例:matrix(c(1,2,3,4,5,6),nrow=2,ncol=3,dimnames=list(c("R1","R2"),c("C1","C2","C3")))

   C1 C2 C3

 R1 1  3  5

 R2 2  4  6

如果令byrow=TRUE,则按行排列,第一行R1:1 2 3,R2: 4 5 6

● diag(A):当A是向量是则生成对角矩阵;但当A是矩阵时,返回对角元素;当A为数字时生成单位阵。

● A×B表示矩阵对应元素相乘;A%×%B表示矩阵相乘;solve返回矩阵的逆矩阵,若矩阵奇异则无法求得结果。

● 常见函数: funcs

  1. 数组(array)

    带有多个下标的类型相同的元素的集合,一维数组即向量,二维即矩阵。array(data=NA, dim=, dimnames=NULL), dim表示维数,dimnames更改维度名称。

  2. 数据框(data frame) ★ 重要(下面重点介绍)

  3. 列表(list)

    列表是一个对象的有序集合,列表中包含的对象又称为它的分量,分量可以是不同的模式或类型。

● 创建:list(变量1=分量1,变量2=分量2,….)

● 访问:

若访问某一个分量集合,LST[[分量索引]];若访问某分量中的某部分元素,LST【【分量索引】】【元素索引】;

由于分量可以被命名,所以可以利用LST$分量名访问。(分量名还可以简写,只要能区分即可)

● 简单函数:length()、mode()、names()分别返回列表长度(分量的数目)、数据类型、列表成分名字。

数据框

● 定义:

data.frame(data1, data2,…)

● 显示:

dim(frame) #显示数据框的维数

nrow(frame) <=> dim(frame)[1] #数据框的行数

ncol(frame) <=> dim(frame)[2] #数据框的列数

names(frame) #显示数据框的变量名

head(frame, num) #显示前num行数据,默认显示前6行

tail(frame, num) #显示后num行数据,默认显示后6行

● 创建数据库中的变量:

1)$法: frame$新变量 = value

2) transform法: frame = transform(frame, 新变量=value)

● 取值:

1)下标法:

frame[i,j]取frame的第i行j列数据;

frame[i,]选取第i行; frame[,j]选取第j列

frame[c(),]选取矩阵数组中的行

2)$法(记号法): frame$变量名

3)subset法(子集法): subset(frame, 变量名满足的条件)

4)attach法:用于解析数据框中的所有变量,此后的变量名可以直接使用

attach(frame)

   mean(变量名) #取某一列变量的均值

detach()

5) with法:也是解析数据框中的所有变量,{}中变量名可直接使用

with(frame, {语句体})

● 剔除变量:

下标前面加‘-’号即可。该方法并未从数据集中真正删除,本质也是一种数据选取。

frame[-i,]剔除第i行数据; frame[,-j]剔除第j列数据

frame[c(-1, -3),]剔除第1和3行数据

frame[-i, -j]剔除第i行和第j列的数据

● 删除变量:从数据集中删除

给变量赋值为NULL:frame$变量 <- NULL

● 分组:将数据框中某组变量按一定条件分组,以新变量加入

1)within():

	frame <- within(frame, {
		新变量=NA;新变量[cond1]<-value;....
	})

2)cut()函数

	frame$新变量 = cut(frame$旧变量, breaks=c(分段值))

数学运算

运算符:+ - × / ^ x%%y(求模取余) x%/%y(整除) !(取非)…(其他跟常用的一样)

还有基本函数以及积分求导组合求根等函数,有需要自查。

字符函数: 大小写转换、选取特定位置的字符、将字符串转为命令执行(先用parse()将字符串转为表达式,再用eval()对表达式求解。)

日期: Date类型的数据可以进行算数运算,利用format函数将日期转为“星期日,22 七月 2007”的格式:format(Sys.Date(), format=”%A %d %B %Y”)

函数

  1. 自定义:

     函数名 <- function(参数1, 参数2, ...)
    
     {
    
         函数体
    
         函数返回值
    
     }
    
  2. 循环语句:

     for(变量 in 取值向量)
     {
         表达式
     }
    
  3. 分支语句:

    if(cond) statement

    if(cond) statement1 else statement2

    ifelse(cond, yes, no): cond为真,输出yes的值,否则输出no的值。

数据整理

  1. 排序

    sort(): 只针对对单个变量(向量)排序

    order(): 还可以对多变量(数据框)排序

    默认为升序;若要降序,可在变量名前加’-‘,或者用参数decreasing=TRUE.

  2. 合并

    merge(frame1, frame2, (by=‘变量名’)): 按横向合并两个数据框,而且要求两个数据框有一个或多个共同变量,可以用by指定按某列合并;

    cbind(frame1, frame2): 横向合并任意两个数据框(矩阵),但要求数据框(矩阵)必须有相同的行数;

    rbind(frame1, frame2): 纵向合并任意两个数据框(矩阵),但要求数据框(矩阵)必须有相同的列数,数据框必须有相同的变量。

  3. 缺失值处理

    is.na(frame或者frame$变量)用于识别是否包含缺失值

    na.omit(frame)用于移除缺失值,按行删除含缺失值的

画图

另,有兴趣了解R Studio软件环境

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦