1攒磨、統(tǒng)計函數
函數 描述
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)) #在列的方向上減去均值
極差正規(guī)化變換
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)對應的就是統(tǒng)計學中的列聯(lián)表,是一種記錄頻數的方法粥喜,統(tǒng)計所有因子對出現(xiàn)的情況的頻數
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 ##對應出現(xiàn)的頻數
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)實現(xiàn)混淆矩陣
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語言 特殊函數