首页 > 更多分享 > 30 天学会R语言 DAY 2:R 程序和数据介绍
2022
06-04

30 天学会R语言 DAY 2:R 程序和数据介绍

本文来了解下R语言关键的组成部分:R程序和R数据

一、R语言程序

R语言程序主要由R程序及其分析结果组成

1. R程序

R程序由多行代码组成(基于S语言),是由命令和结果名组成。

例如:

Lg<-log(10) #计算10的自然对数值

其中,

  • log(10)为命令,Lg为命令产生的结果名
  • R程序代码大小写必须区分,Lg和lg是不同的
  • R语言中,命令主要为函数形式
  • 结果名主要是数据或者统计分析结果集合的一个标签。
  • 命令产生的结果复制给结果名的符号为“<-”,就是告诉我们,我这条命令,产生的结果都打包给你了,这个包的名字叫做Lg。
  • #+文字 为对程序的注释或解释,程序运行时会自动忽略。解释很重要,规范的R程序每天都需要解释,以免下一次看不懂上次R代码的意思。

2.R语言的分析结果

上述已经提过,R语言分析在一个名字为结果名的包中,想要知道结果,只要如果你想知道Lg的内容。直接再输入以下命令,就出来结果了。

Lg

上述程序合并在一起就是

Lg<-log(10)

Lg

有些时候命令不打包,也就是不赋值,则直接log(10)就可以出来结果了。

log(10)

3. R程序的具体运行过程

R程序运行过程,全部可以在Rstudio文本编辑器操作。如果要将两行全部运行,选中全部,点击右上角run按钮。如果只想跑一行,讲鼠标放置在改行,点击右上角run按钮即可

> Lg<-log(10)

> Lg

[1] 2.302585

> log(10)

[1] 2.302585

具体GIF动画

4. R命令的主要形式:函数

大多数R语言的命令为函数。中学学过数学我们就知道f(x),为函数的基本表现方法。在R语言也是如此。

log(10)中,log为函数名,往往形式为log(),即为y=ln(x)。10为一个函数的参数,也就是其中的x。

R语言包的方便就在于,对于复杂的函数,我们无序自己手动去计算函数的值,R语言作者通过编写程序,已经写了一系列的函数,帮助我们去直接计算。比如计算标准差sd,无需将标准差的公式写出来计算,只需sd()即可

函数中,要纳入的参数往往不是一个,很多时候函数()中的参数很多。比如,我需要产生一连续的的数据,采用seq的方法。比如我想产生1-5直接连续的一串数据,那么就可以

> seq(1,5)

[1] 1 2 3 4 5

这里面的参数看起来有2个,也就是一头一尾的界值。但实际上seq()的参数总共是五个,包括from,to,by,length.out,along.with 另外三个一般都缺省了。

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)), length.out = NULL, along.with = NULL, ...)

如果我们加一个by参数(间隔2个单位产生一串数据):

> seq(1,5,2)

[1] 1 3 5

因此,R语言函数其实设定的参数个数往往都不少,一般情况下,我们以缺省的方法可以忽略它,但是特殊情况必须要进行设置。各种函数的参数解释可以输入help()语句进行学习:

> help("seq")

5. R语言简单计算

以下是R语言最基本的数学计算公式,请大家进行根据R函数进行简单的运算

加减乘除:+ - * / ;

> 1+1 #程序

[1] 2 #运算结果

平方根:sqrt()

> sqrt(25) #程序

[1] 5 #运算结果

对数:log2()、log10()、log(a,base=exp(1))

> log(10) #程序

[1] 2.302585 #运算结果

其他还包括:余数、整除:%% %/%;幂、指数:^;判断符号 == > < != <= >= 等

二、R语言程序对象:R数据

1. R 数据产生的方式

R数据产生往往有两种:第一种是利用R函数直接产生相应的数据集,一般用来举例、方便学员理解;另外一种是从外界的数据库比如EXCEL,导入数据,形成数据集,这种是大多数R数据分析的的方式。

今天文章先来先来介绍第一种方法。利用R函数直接产生数据库的方法,最常用的是利用最基本的函数c( )

举例:c()产生一串数据,并赋值结果名(数据名)x1、x2

> x1<-c(2,4, 6, 10) #产生数据,数据名为x1

> x1

[1] 2 4 6 10

或者

> x2<-c("A","B", "C","D") #产生数据,数据名为x2

> x2

[1] "A" "B" "C" "D"

R语言也可以不用 c( ),直接产生连续等距数据:

> x3<-1:5 #产生1-5直接连续整数数据,数据名为x2

> x3

[1] 1 2 3 4 5

我们也可以利用seq(1,5)产生等距的数据串,本文先前已经介绍过了。也可以利用

2. R数据的类型

R数据类型可以从两个角度进行分类,一种是根据数据值本身,或者统计学上所说的变量值来进行判断;第二种角度,根据变量特性进行判断。

第一种角度,变量观察值的类型

根据数据值,我们可以有以下多种形式

  • 数字(double/numeric, 缩写num)
  • 整数(integer, 缩写int) : 1L, 2L
  • 虚数(complex, 缩写cplx) :1+2i, 3-5i
  • 逻辑(logic, 缩写logi) : True, False
  • 文字(character, 缩写chr)

x1<-c(2, ,4, 6, 10),x1数据集全部为数字型

x2<-c(“A”, “B”, “C”, “D”),x2 数据集全部为文字型

特别注意的是,R语言逻辑型数据为True, False,或者T,F,他们不是字符串,而是对客观现象的一种判断,在R语言有特殊的地位,今后会经常碰到,敬请注意。

函数class( ) 可以鉴定一串数据的类型

> class(x1)

[1] "numeric"

> class(x2)

[1] "character"

第二种角度,变量的类型

在医学研究中,数据由变量组成,变量可以分为数值变量和分类变量。

数值变量数据,一般来说变量值都以数值为主。包括整数型和数值型向量

> x4<-c(170,171,161,164) # 产生身高的变量

> x4

[1] 170 171 161 164

分类变量数据,包括无序和有序。变量值的属性结果,比如女性或者男性,在R语言中分类变量我们称之为因子(factor)。

主要包括:字符型变量;整数型变量: 1、2;逻辑性变量;医学数据库最常见的类型是整数型变量,即便是字符型变量(性别,男性和女性),也通常会以整数型变量体现,比如1,2来表示,用1代表男,用2代表女。这样做好处非常明显:数据库主要开展数学运算,数学运算对象,最好是数字。

对于字符串型的分类数据,R语言直接认定为因子

对于数值型分类数据,R语言很多时候认定为数值变量数据,需要用factor( )或者as.factor( )函数进行转换

factor( )可将整数型向量转为分类变量数据,变成因子

> f1<-factor(c(1,2,1,3,2,4,2,4,2,1))

> f1

[1] 1 2 1 3 2 4 2 4 2 1

Levels: 1 2 3 4

factor( )可以加levels参数设定,对因子顺序进行重新排列

> f2<-factor(c(1,2,1,3,2,4,2,4,2,1),levels=c(2,1,4,3))

> f2

[1] 1 2 1 3 2 4 2 4 2 1

Levels: 2 1 4 3

在f2数据集产生过程中,函数加了条件levels。加levels的意思是,对里面因子1,2,3,4的排列顺序重新调整,在这个例子中,2这个一类别是放在最前面的,在以后统计分析中,作为对照组。这一操作是否有价值,我们可以在统计分析中,任意设定对照组,而不是只以第一组或者第四组为对照

我们还可以设定值的标签:

f3<-factor(c(1,2,1,3,2,4,2,4,2,1), levels=c(2,1,4,3),

labels = c("A","B","AB","O"))

对于因子,我们还有更多的操作,诸位可以试试

  • table(f1) #因子列表展示
  • class(f1) #查看f1的类型
  • levels(f1) #查看f1 因子的分组水平
  • summary(f1) #f1因子的汇总
  • as.factor( ) #把数值型的资料变成因子

DAY2的内容就介绍到这里!


转自:医学论文与统计分析

最后编辑:
作者:萌小白
一个热爱网络的青年!

发布评论

表情