一周学会R语言心得(一)

2020-06-17 00:00:00 函数 语言 可以使用 向量 矩阵

R语言区别(与python和MATLAB比较)

1.赋值<-或者=,用<-更好。注意R和MATLAB区分大小写,python不区分大小写,而且R可以使用关键字作为变量名。。

2.数据结构

vector c(),seq()

matrix matrix()

array array()

dataframe dataframe()

list list()

因子 factor()


3.数组长度 length,数据类型,mode,(‘numeric’,‘character’),查看变量类型,使用class(A),返回变量的类型。注意,R中vector 和numeric 没有严格区分。

4.R从1开始,更像MATLAB

5.R语言的slice操作,加了一个“-”,可以随意的去掉某些元素,不考虑某个维度时,R语言直接空着那一维,而MATLAB和python使用:表示所有。

6.R语言同样也可以使用布尔索引

7.大值的索引 R:which.max python argmax 更一般的使用index函数来得到

8.反转向量 R:rev(a) python a[::-1]

9.sort 函数一致,对于复杂数据结构应当指明按照什么来排序


10.矩阵的编号顺序是按照列来进行,这个与MATLAB语言一致,(一个是C风格,一个是Fortran风格),可以使用byrow=T来个性化按照行来reshape.在不指明

行列的情况下,默认个数字是行,第二个是列。


11.R语言的array函数的用法 Z<-array(1:24,c(2,3,4),list(dim,dim2,dim3)),分别为array(数据,数据维度向量,数据标签列表)

12.R中head 与tail显示前6行,python显示前五行

13.mean,max,min,var,都一直,但是标准差R使用sd,python:std


矩阵运算

14.t(a)表示转置,另一个方面的功效很大,可以把vector转化为矩阵!

15.R语言*只是纯粹的矩阵元素相乘,%*%是矩阵乘法,MATLAB:*与.*,python:*,.dot()


循环

16.for(i in 1:59){do something},while(i<59){do somthing}


矩阵的基本运算

17.求逆矩阵 solve(A)

18.查看df内容使用view和fix


data.frame的基本操作

19.df$取属性,可以使用attach(df),detach(df)来避免总是要写变量名

20.format(string,"%Y")取出字符串数据的年份

21.within函数可以省略变量名修改函数,例如student有一列是birthday,我们可以通过sys.date推算出年龄并增加一列:


student$Age<-as.integer(format(Sys.date(),'%Y'))-as.integer(format(student$birthdate,'%Y'))

如果使用within函数:

student<-within(student,{Age<-as.integer(format(Sys.date(),'%Y'))-as.integer(format(birthdate,'%Y'))})

merge函数


result<- merge(student,score,by.x='ID',by.y='SID')

22.有一个类特殊的数据类型叫做因子,因子例如‘M’,'F',等可以被用来分类的特征

R语言中的函数是tapply,tapply(student$score,student$Gender,mean)

python中是groupby,student.score.groupby('student.Gender').apply()


23.factor可以对不同level进行顺序命名

affils<-c('R','D','D','R','U','D')

affils<-factor(affils,levels=c('U','R','D'),ordered=TRUE)


24.分组依据也可以是一个关于factor的list

staff$over25<-ifelse(staff$Age>25,1,0)

tapply(staff$income,list(staff$over25,staff$Gender))返回一个crosstable


25.如果只是想分为几组,也就是得到字典。python:dic=staff.groupby(['over25','Gender'])返回树状结构的字典,底层仍然是一个df

R:split(staff$income,list(staff$over25,staff$Gender))


26.把一个序列分割并得出对应的索引

split(1:length(staff$gender),staff$gender)

这个方法可以被用来处理文本,统计词数

fileword<-function(tf){txt<-scan(tf,'');

word<-split(1:length(txt),txt)

}

返回的是不同的词数以及每个词出现的位置序列的一个字典,序列的长度为词的频数


如果使用python:

counter={}

for i in txt:

if i in counter.keys():

counter[i]+=1

else:

counter[i]=1

27.应该关注by()函数的使用,另外在R中如果可以不使用循环则力求不使用。

28.names(df),colname(df),row.names(df)返回列名向量,列名向量,行名向量

29.edit(df)可以手动修改df,但不改变原值,可以通过赋值保存。

fix(df)可以手动修改df,但改变原值

30.subset函数挑选行subset(df,name=='aa',select=c(age,sex)),subset(df,布尔条件,选出哪些列)

配置SQL Sever ODBC数据源

Open Database Connectify,ODBC

1.win+r

2.输入odbcad32

3.添加新的数据源进去

相关文章