R语言系列:数据的基本运算

摘要:
基本操作符号1。基本数学计算+,-,*,/,^,%%(模),%/%(整数除法)注意:如果模运算的两边都是小数,则整数和小数部分分别是模。示例:xor(0,1)4。常用运算函数abs、sqrt、exp、log、log10、log2sin、cos、tan、asin、acos、atan、atan2hoose(n,k)#n,从n中取k的组合数来计算n!当x是数组时,MARGIN可以大于2,或者使用c(1,2)按行和列计算。LAPPLY和SAPPLY:用于列表。前者返回列表,后者返回矩阵或向量。默认情况下,峰度和偏度R的计算不提供计算这两个值的函数。

基本运算符号 
1、基本数学计算 
+、-、*、/、^、%%(求模)、%/%(整除) 
注意:求模运算两边若为小数,则整数和小数部分分别求模。例:5.6%%2.2 
2、比较运算 
>、<、>=、<=、==、!= 
3、&、|、!、&&、||、xor 
注意:运算符“逻辑与”和“逻辑或”存在两种形式,“&”和“|”作用在对象中的每一个元素上并且返回和比较次数相等长度的逻辑值;“&&”和“||”只作用在对象的第一个元素上。

xor为异或,两值不等为真,两值相等为假。例:xor(0, 1)
4、常见运算函数
abs、sqrt、exp、log、log10、log2
sin、cos、tan、asin、acos、atan、atan2
choose(n, k)    #n个里面取k个的组合数
计算n!的方法:factorial(n); gamma(n+1); prod(1:n)
sign(x)    #返回x的正负号

R中计算的两个特点
1、向量化(逐个元素循环操作) 
例:y=1:10; y+1; sqrt(y);
2、两个不等长的变量循环填充
例:x=1:3; y=1:10; z=x+y
注意:当两个变量长度不是整倍数的关系,会有警告信息。

向量常用统计函数
max、min、range(返回最小、最大两个值)、sum、prod(连乘Π)、mean、median(中位数)、var、sd、length、rev(取逆序)
which.max、which.min:返回最大、最小值的下标
which:返回符合条件元素的下标
    x=matrix(1:20,4,byrow=T);
    which(x > 8)    #返回一个向量
    which(x > 8, arr.ind=T)    #返回一个指示行列号的矩阵
diff:差分,即x[i+1]-x[i]
cumsum:计算x[i]=sum(x[1]:x[i])
cumprod:计算x[i]=prod(x[1]:x[i])
sort、rank、order:参见http://my.oschina.net/explore/blog/84359
quantile(x, probs=)    #默认probs为c(0, .25, .5, .75, 1)
    例:x=0:100; quantile(x); quantile(x, probs=seq(0, 1, 0.1)
IQR:四分位数间距
summary:给出常见统计量,包括四分位数、最小、最大和中位数
weighted.mean(x, y)    #加权平均,等同于sum(x*y)/sum(y)
cov、cor:两向量的协方差和线性相关系数
    #可使用参数 method = c("pearson", "kendall", "spearman"))指定计算方法,默认第一种。
    #方法名称可使用首字母缩写
table(x)    #当x为定性数据时,统计x的频数
table(x,y,z)    #输出由x、y、z三个定性变量组成的列联表
ftable(x,y,z)    #以多重嵌套二维表的形式输出有x、y、z三个定性变量组成的列联表
nchar(x)    #x为字符串,求x的字符个数
    例:x=c("china", "english", "amercia"); nchar(x);
match(x,y)    #再y中逐个查找x,若有返回在y中匹配的位置,若无返回NA
all、any    #分别报告各元素是否全部或至少一个为TRUE

矩阵常用函数
t:转置(行列互换)
cov、cor:协方差阵和协相关系数阵
diag:提取对角元素,输出为一个向量
rbind、cbind:按行合并、按列合并,可合并若干向量,也可合并若干矩阵
*:逐元乘积
%*%:代数乘积
crossprod:交叉乘积
det:矩阵的行列式值
eigen:特征根和特征向量
qr:QR分解
scale:对矩阵进行中心化和标准化

集合运算
    union(x,y)    #求并集
    intersect(x,y)    #求交集
    setdiff(x,y)    #求属于x而不属于y的所有元素
    setequal(x,y)    #判断x与y是否相等
    a %in% y    #判断a是否为y中的元素
    choose(n, k)    #n个里面取k个的组合数
    combn(x,n)    #x中的元素每次取n个的所有组合
        combn(x,n,f)     #将这些组合用于指定函数f

向量化(apply)
apply(x, MARGIN, FUN)    #MARGIN为1则逐行运算,2则逐列运算。FUN为所用函数。
    当x为数组时,MARGIN可大于2,或使用c(1,2)表示按行列计算。
lapply、sapply:用于列表,前者返回列表,后者返回矩阵或向量

附:峰度和偏度的计算
R默认不提供函数计算这两个值。
如果需要计算,可以自编公式或者使用fBasics包。
加载fBasics包,可使用以下命令进行计算:
    skewness(x)    #偏度
    kurtosis(x)    #峰度
     basicStates(x)    #提供16个统计量

> x=rnorm(1000)
> basicStats(x)
                      x
nobs        1000.000000
NAs            0.000000
Minimum       -3.263744
Maximum        3.462402
1. Quartile   -0.706243
3. Quartile    0.652421
Mean          -0.043407
Median         0.003339
Sum          -43.406637
SE Mean        0.031843
LCL Mean      -0.105894
UCL Mean       0.019081
Variance       1.014007
Stdev          1.006979
Skewness      -0.029121
Kurtosis      -0.179738

免责声明:文章转载自《R语言系列:数据的基本运算》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Elasticsearch Java Client 版本区别及起步(5.X 和6.X)服务级别协议(SLA)与运行水平协议(OLA)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

R语言自然语言处理:关键词提取(TF-IDF)

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R/Python),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言高效数据处理指南》、《文本数据挖掘——基于R语言》(《文本数据挖掘 基于R语言》(黄天元)【摘要 书评 试读】- 京东图书)。知乎专栏:R...

vcf格式文件转化为Excel(csv)格式文件(R语言的write.csv,write.table功能,Excel表的文件导入功能)

最近在整理文件,准备把vcf文件转化为Excel格式,或者CSV格式,网上搜了一堆资料,还真有人专门开发出转化格式的工具:叫vcf2csv(下载地址http://vcf2csv.sourceforge.net/#links),赶紧下载安装,开始转化,结果弹出行列不一致的错误,遂放弃。 尝试了一堆无用的工具以后,想着能不能用R的write.csv来实现转化,...

拓端数据tecdat|R语言贝叶斯线性回归和多元线性回归构建工资预测模型

原文链接:http://tecdat.cn/?p=21641  工资模型 在劳动经济学领域,收入和工资的研究为从性别歧视到高等教育等问题提供了见解。在本文中,我们将分析横断面工资数据,以期在实践中使用贝叶斯方法,如BIC和贝叶斯模型来构建工资的预测模型。 加载包 在本实验中,我们将使用dplyr包探索数据,并使用ggplot2包进行数据可视化。我们也可...

R语言基础-数组和列表

数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, dim),当中data必须是同一类型的数据。dim是各维的长度组成的向量。 1、产生一个三维和四维数组。 例1:xx <- array(1:24, c(3, 4,...

9个最佳的大数据处理编程语言(转载自物联网智库)

大数据的浪潮仍在继续。它渗透到了几乎所有的行业,信息像洪水一样地席卷企业,使得软件越发庞然大物,比如Excel看上去就变得越来越笨拙。数据处理不再无足轻重,并且对精密分析和强大又实时处理的需要变得前所未有的巨大。 刚开始学习数据科学的人都会面对同一个问题: 不知道该先学习哪种编程语言。 不仅仅是编程语言,像Tableau,SPSS等软件系统也是同样的情况...

windows下设置GPU加速tensorflow运算(GT1050)

一、自己的环境 操作系统:win10   GPU:GTX1050+CUDA9.0+cuDNN    IDE:Pycharm    框架:tensorflow-gpu    解释器:Python3.6(强烈建议anaconda3,又方便又强大,下载太慢可以找镜像) 二、安装顺序 1、首先安装CUDA9.0。下载地址:https://developer.nvi...