2020-05-30R语言 特殊函数

1、统计函数

函数 描述
mean() 平均数
median() 中位数
sd() 标准差
var() 方差
mad() 绝对中位差,即原数据减去中位数后得到的新数据的绝对值的中位数
quantile(x,probs) 求分位数,x为待求分位数的数值型向量,probs为一个由[0,1]之间的概率值组成的数值向量,eg: a<-quantile(x,c(.3,.84) 求x的30%和84%分为点
range() 值域,a<-c(1,2,3,4) 返回c(1,4),
sum() 求和
diff(x,lag=n) 滞后差分,lag指定滞后几项,默认1,对于c(1,5,23,29)返回4,18,6
min() 最小值
max() 最大值
scale(x,center=TRUE,scale=TRUE) 为数据对象x按例进行中心化(center=TRUE)或标准化(center=TRUE,scale=TRUE)
sweep() 运算,变换
apply() 运算

scale() 对数据矩阵做中心化和标准化变换,将一组数进行处理,默认情况下是将一组数的每个数都减去这组数的平均值后再除以这组数的均方根

两个参数,

一个是 center=TRUE,默认的,是将一组数中每个数减去平均值,若为false,则不减平均值;
另一个 scale=TRUE:默认的,是将一组数中每个数除以均方根

apply()把一个function作用到array或者matrix的margins(可以理解为数组的每一行或者每一列)中,返回值vector、array、list

注意:使用apply之后,返回都是一个向量,并不会因为apply计算行(列)的sum就会自动返回一个列(行)向量
eg:
apply(x, 2, max) - apply(x,2,min) #算出极差,即列上的最大值-最小值

sweep(x, MARGIN, STATS, FUN="-", ...) 对矩阵进行运算

MARGIN为1,表示行的方向上进行运算,为2表示列的方向上运算
STATS是运算的参数 即变量??
FUN为运算函数,默认是减法
eg:
sweep(x, 2, apply(x, 2, mean)) #在列的方向上减去均值

极差正规化变换

center <- sweep(x, 2, apply(x, 2, min))
R <- apply(x, 2, max) - apply(x,2,min)
x_star <- sweep(center, 2, R, "/")
注意:均方差=标准差<>均方根,

均方差:

均方根:

2、数学函数

函数 描述
abs() 绝对值
sqrt() 平方根
ceiling() 向上取整
floor() 向下取整
trune() 向0的方向截取整数部分
round(x,digits=n) 将x舍入为指定的小数
signif(x,digits=n) 将x舍入为指定的有效数字位数
cos()、sin()、tan() 三角函数
acos()、asin()、atan() 反三角函数
cosh()、sinh()、tanh() 双曲三角函数
acosh()、asinh()、atanh() 反双曲三角函数
log(x,base=n) 对x取以n为底的对数
log(x) 自然对数,以e为底
log10(x) 常用对数,以10为底
exp(x) 指数函数
3、运算符

运算符 描述
< 小于
<= 小于等于

大于
= 大于等于
== 严格等于
!= 不等于
!x 非x
x|y x 或 y
x&y x 和 y
isTRUE(x) 测试x是否为TRUE
4、日期符号和函数

符号、函数 含义 示例
%d 数字表示的日期 01-31
%a 缩写的星期 Mon
%A 非缩写星期 Monday
%m 月份 00-12
%b 缩写月份 Jan
%B 非缩写月份 January
%y 两位数的年份 18
%Y 四位数的月份 2018
as.Date(x, "input_format") 日期值通常以字符串的形式输入到R中,然后转化为以数值形式存储的日期变量,input_format则给出了用于读入日期的适当格式 见下
format(x,format="output_format") 输出指定格式的日期值,还可以提取部分内容
as.character() 将日期值转换为字符型

a<-as.Date(c("2018-3-4","2018-4-5")) ##字符串
a
[1] "2018-03-04" "2018-04-05" ##数值型
b<-c("08/08/2018","09/09/2018")
ans<-as.Date(b,"%m/%d/%Y")
ans
[1] "2018-08-08" "2018-09-09"

b<-c("08/08/2018","09/09/2018")
aa<-as.Date(b)
aa
[1] "0008-08-20" "0009-09-20" ##由结果可知,默认年月日~~~

as.Date(b) ##直接输出结果
[1] "0008-08-20" "0009-09-20"
Sys.Date() ##当前日期

[1] "2018-08-23"

date() ##当前星期 月日 时间 年份
[1] "Thu Aug 23 18:42:16 2018"

today<-Sys.Date()
format(today,format="%B %d %y")
[1] "八月 23 18" ##中文版的R所以没有输出的不是8月的英语??
format(today,format="%B%d%y")
[1] "八月2318"
format(today,format="%A")
[1] "星期四"
as.character(today)
[1] "2018-08-23"
as.Date(today)
[1] "2018-08-23"
5、函数na.omit()移除所有含有缺失值的观测

6、table()函数

1)对应的就是统计学中的列联表,是一种记录频数的方法,统计所有因子对出现的情况的频数

s<-c(1,2,3,3,4,2,3,4,5,6)
z<-table(s)
z
s
1 2 3 4 5 6 ##元素
1 2 3 2 1 1 ##对应出现的频数
summary(z)
Number of cases in table: 10

Number of factors: 1

names(z) ##提取元素
[1] "1" "2" "3" "4" "5" "6"
as.numeric(3,4) ##输出指定频数的元素,若w<-names(z),as.numeric(w)即为所有元素
[1] 3
2)实现混淆矩阵

t<-table(c(1,0,1,1,1,0,0,1),c(0,0,1,1,1,0,1,1)) ##可理解第一个c为实际值,第二个为预测值
t

0 1

0 2 1
1 1 4 ## 对角线即为预测对的数量

(sum(diag(t))/sum(t) #预测对的数量除以总数据量

  • )
    [1] 0.75

sum(diag(t))/sum(t)
[1] 0.75
diag(t) ## 0猜对2个,1猜对4个
0 1
2 4
7、aggregate函数

数据处理中常用到的函数,简单说有点类似sql语言中的group by,可以按照要求把数据分组聚合,然后对聚合以后的数据进行加和、求平均等各种

x=data.frame(name=c("张三","李四","王五","赵六"),

  • sex=c("M","M","F","F"),age=c(20,40,22,30),
  • height=c(166,170,150,155))

aggregate(x[,3:4],by=list(sex=x$sex),FUN=mean)
sex age height
1 F 26 152.5
2 M 30 168.0

注意:
• 字符或者factor类型的列不要一起加入计算,会报错
• by参数要构造成list,如果有多个字段,by就对应队列,和group by多个字段是同样的道理
R语言 特殊函数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容