一周学会R语言心得(一)
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.添加新的数据源进去
相关文章