R 语言程序主要由 R 程序及其分析结果组成。
R 程序由多行代码组成(基于 S 语言),是由命令和结果名组成。
例如:
Lg<-log (10) #计算10的自然对数值 其中, log (10)为命令, Lg 为命令产生的结果名 R 程序代码大小写必须区分, Lg 和 lg 是不同的 R 语言中,命令主要为函数形式
结果名主要是数据或者统计分析结果集合的一个标签。
命令产生的结果赋值给结果名的符号为"<-",就是告诉我们,我这条命令,产生的结果都打包给你了,这个包的名字叫做 Lg 。 #+文字 为对程序的注释或解释,程序运行时会自动忽略。解释很重要,规范的 R 程序每天都需要解释,以免下一次看不懂上次 R 代码的意思。
上述已经提过, R 语言分析在一个名字为结果名的包中,想要知道结果,只要如果你想知道 Lg 的内容。直接再输入以下命令,就出来结果了。 Lg 上述程序合并在一起就是 Lg <- log (10) Lg 有些时候命令不打包,也就是不赋值,则直接 log (10)就可以出来结果了。 log (10)
R 程序运行过程,全部可以在 Rstudio 文本编辑器操作。如果要将两行全部运行,选中全部,点击右上角 run 按钮。如果只想跑一行,讲鼠标放置在改行,点击右上角 run 按钮即可
Lg <- log (10)
Lg
[1]2.302585
log (10)
[1]2.302585
大多数 R 语言的命令为函数。中学学过数学我们就知道 f ( x ),为函数的基本表现方法。在 R 语言也是如此。 log(10)中,log为函数名,往往形式为log(),即为y=In(x)。10为一个函数的参数,也就是其中的x。
R语言包的方便就在于,对于复杂的函数,我们无序自己手动去计算函数的值,R语言作者通过编写程序,已经写了一系列的函数,帮助我们去直接计算。比如计算标准差sd,无需将标准差的公式写出来计算,只需sd ()即可.
函数中,要纳入的参数往往不是一个,很多时候函数()中的参数很多。比如,我需要产生一连续的数据,采用seq的方法。比如我想产生1-5直接连续的一串数据,那么就可以。
seq(1,5)
[1] 12345
这里面的参数看起来有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]135
因此, R语言函数其实设定的参数个数往往都不少,一般情况下,我们以缺省的方法可以忽略它,但是特殊情况必须要进行设置。各种函数的参数解释可以输入help()语句进行学习:
help("seq")
以下是R语言最基本的数学计算公式,请大家进行根据R函数进行简单的运算
加减乘除:+ -*/;
1+1 #程序
[1]2 #运算结果
平方根:sqrt()
sqrt(25) #程序
[1]5 #运算结果
对数:log2()、log10()
log(10) #程序
[1] 2.302585 #运算结果
其他还包括:余数、整除:%% %/%;幂、指数:^;判断符号== > < != <= >= 等
5%%2 #求余数
5%/%2 #求整除
这里要说明一下,判断符号的使用。
举例
2>2
[1] FALSE
6==6 #在R语言相等的方式是==,而不是=
[1] TRUE
可以看出,判断符号可以返回逻辑型结果,F 或者T。判断符号今后使用场景很多,它在函数里面,将返回判断符号结果为真(True)的那些值。
在以后的推文中再进行介绍。
R语言有两种形式,—种是R语言分析结果,—种原始数据。此处只介绍原始数据。分析结果可以下—阶段的分析对象,也可以是最终结果。
R数据产生往往有两种:第一种是利用R函数直接产生相应的数据集;另外—种是从外界的数据库比如EXCEL,导入数据,形成数据集,这种是大多数R数据分析的的方式。
这里先介绍第一种方法。利用R函数直接产生数据库的方法,最基本的方法是利用函数c()。
举例: c()产生一串数据,并赋值结果名(数据名)x1、x2
x1<-c(2,3,5,7,10) #产生数据,数据名为x1
x1
[]2 3 5 7 10
或者
x2<-c("A", "B","C","D") #产生数据,数据名为x2
x2
[1] "A""B""C""D"
必须注意的是,双引号必须都要朝下,错误的双引号是""。
R语言也可以不用c(),直接产生连续等距数据:
x3<-1:5 #产生1-5直接连续整数数据,数据名为x3
x3
[1]1 2 3 4 5
我们也可以利用seq(1,5)产生等距的数据串,本文先前已经介绍过了。也可以利用
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
x4
[1] 170 171 161 164
分类变量数据,包括无序和有序两类。变量值是分类变量值,比如女性或者男性。在R语言中分类变量我们称之为因子(factor)。主要包括:字符型变量;整数型变量:1、2;逻辑性变量。
医学数据库最常见的分类变量类型是整数型变量。即便是字符型变量(性别,男性和女性),也通常会以整数型变量体现,比如1,2来表示,用1代表男,用2代表女。这样做好处非常明显:数据库主要开展数学运算,数学运算对象,最好是数字。
对于字符串型的分类数据,R语言直接认定为因子。
对于数值型分类数据,R语言很多时候认定为数值变量数据。此时,需要用factor()或者as.factor()函数进行转换。as.factor()不能加levels,factor()可以加levels
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
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 = ("A","B","AB","O"))
对于因子,我们还有更多的操作,诸位可以试试.
table(f1) #因子列表展示
class(f1) #查看f1的类型
levels(f1) #查看f1因子的分组水平
summary(f1) #f1因子的汇总
as.factor( ) #把数值型的资料变成因子R
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。