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语言系列:数据的基本运算的更多相关文章
- R语言系列:生成数据
R语言系列:生成数据 (2014-05-04 17:41:57) 转载▼ 标签: r语言 教育 分类: 生物信息 生成规则数据1.使用“:“,如x=1:10,注意该方法既可以递增也可以递减,如y=10 ...
- R语言进行数据预处理wranging
R语言进行数据预处理wranging li_volleyball 2016年3月22日 data wrangling with R packages:tidyr dplyr Ground rules ...
- R语言进行数据预处理
R语言进行数据预处理wranging li_volleyball 2016年3月22日 data wrangling with Rpackages:tidyr dplyr Ground rules l ...
- R语言 我要如何开始R语言_数据分析师
R语言 我要如何开始R语言_数据分析师 我要如何开始R语言? 很多时候,我们的老板跟我们说,这个东西你用R语言去算吧,Oh,My god!什么是R语言?我要怎么开始呢? 其实回答这个问题很简单,首先, ...
- 用R语言提取数据框中日期对应年份(列表转矩阵)
用R语言提取数据框中日期对应年份(列表转矩阵) 在数据处理中常会遇到要对数据框中的时间做聚类处理,如从"%m/%d/%Y"中提取年份. 对应操作为:拆分成列表——列表转矩阵——利用 ...
- R语言读写数据
R语言读写数据 一般做模型的时候,从外部的excel中读入数据,我现在常用的比较多的是read_csv(file) 读入之前先把excel数据转化成.csv格式 同样的把结果输出来的时候用的是writ ...
- 【R语言系列】作图入门示例一
假设有如下数据,我们使用plot函数作图 月龄 体重 月龄 体重 1 4.4 9 7.3 3 5.3 3 6.0 5 7.2 9 10.4 2 5.2 12 10.2 11 8.5 3 6.1 R语 ...
- 【R语言系列】R语言初识及安装
一.R是什么 R语言是由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两个人共同发明. 其词法和语法分别源自Schema和S语言. R定义:一个能够自由幼小的用于统计计算和绘 ...
- R语言|数据特征分析
对数据进行质量分析以后,接下来可通过绘制图表.计算某些特征量等手段进行数据的特征分析. 主要通过分布分析.对比分析.统计量分析.周期性分析.贡献度分析.相关性分析等角度进行展开. 2.1 分布分析 分 ...
- R语言的数据输入
既然了解了R语言的基本数据类型,那么如何将庞大的数据送入R语言进行处理呢?送入的数据又是如何在R语言中进行存储的呢?处理这些数据的方法又有那些呢?下面我们一起来探讨一下. 首先,数据输入最直接最直观的 ...
随机推荐
- c的详细学习(11)文件
为了提高数据输入/输出的处理效率,可以将程序运行时所需要的原始数据从文件中读取,并将程序运行的结果写入到文件中. (1)文件概述 1)基本概念 文件是指存储在外部介质上数据的集合,可以 ...
- 常用grads函数
GrADS的函数分两类, 一类是对格点/站点数据执行运算的,这一类我们姑且称之为分析函数; 另一类是脚本编程(gs)时使用的, 这后一类我们姑且称之为脚本函数. 第一类分析函数又分为格点分析和站点分析 ...
- leetcode 1049 Last Stone Weight II(最后一块石头的重量 II)
有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出任意两块石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x == y,那么 ...
- [原创]java WEB学习笔记02:javaWeb开发的目录结构
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 前端绘图方式Canvas和SVG的区别
Canvas和SVG是html5中支持2种可视化技术,都是可以在画布上绘制图形和放入图片.下面来介绍和分析一下他们. 一.Canvas 和 SVG 简介 1.什么是Canvas? Canvas 是H5 ...
- curl 监控web
[root@rhel6 ~]# curl -I -s -w "%{http_code}\n" -o /dev/null http://127.0.0.1 [root@rhel6 ~ ...
- Shiro身份认证-JdbcRealm
Subject 认证主体 Subject认证主体包含两个信息 Principals : 身份,可以是用户名.邮箱.手机号等,用来标识一个登录主体身份. Credentials : 凭证,常见有密码,数 ...
- JavaWeb -- Servlet运行过程 和 细节
Servlet的运行过程 lServlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则 ...
- Codeforces 459E Pashmak and Graph:dp + 贪心
题目链接:http://codeforces.com/problemset/problem/459/E 题意: 给你一个有向图,每条边有边权. 让你找出一条路径,使得这条路径上的边权严格递增. 问你这 ...
- php 简单笔记
1.时间 $date1 = "2014-11-11"; echo date('Y-m-d',strtotime("$date1 +5 day")); //输出结 ...