R语言中funs(. - lag(.))是什么意思?

Python014

R语言中funs(. - lag(.))是什么意思?,第1张

R里面的LAG只适用于时间序列,不适合于dataframe或者向量,因此需要自己写一个小小的函数来实现lag的功能。

lagdf <- function(x, k) {

c(rep(NA, k), x)[1 : length(x)]

}

y<-lagdf(x,2)

cbind(x,y)

R 里面的diff()函数倒是支持数值向量

另外一种常用的计算lag()的方法

log.yahoo <- log(yhoo.close[-1]/yhoo.close[-length(yhoo.close])

如果直接使用diff(log(data$close))会报错,是因为由于差分,向量的长度缩小了一个,需要采用

c(NA, diff(log(data))),来增加一个向量单元

R语言中的dplyr包非常神奇,里面包含很多的函数,今天我们就来介绍下窗口函数的应用。

窗口函数应用

mtcars %>% group_by(cyl) %>% mutate(rank= min_rank(desc(mpg)))

mtcars %>% group_by(cyl) %>% mutate(mpg_max = max(mpg))

原来的明细还保留,同时每个分组的统计值算出来了,是不是很方便

1.2 批量操作

同时若你嫌麻烦一个个地对变量进行操作,还可以使用mutate_each函数对数据框中的变量批量操作,通过调整funs(即functions)和vars(variables)参数控制functions的数量,以及参与变形的variables,这里控制variables的技巧与select函数相似。

#对每个变量进行排名

mtcars%>%mutate_each(funs(dense_rank))

mpg cyl disp hp drat wt qsec vs am gear carb

1 16 2 13 11 16 9 6 1 2 24

2 16 2 13 11 16 12 10 1 224

3 19 16 615 7 22 2 221

4 17 2 16 115 1624 2 111

5 13 3 23 156 18 10 1 112

#对disp的变量进行排名

mtcars%>%mutate_each(funs(dense_rank,min_rank),disp)

mpg cyl disp hp dratwt qsec vs am gear carb dense_rank min_rank

1 21.0 6 160.0 110 3.90 2.620 16.46 0 144 13 13

2 21.0 6 160.0 110 3.90 2.875 17.02 0 144 13 13

3 22.8 4 108.0 93 3.85 2.320 18.61 1 141 6 6

4 21.4 6 258.0 110 3.08 3.215 19.44 1 031 16 18

5 18.7 8 360.0 175 3.15 3.440 17.02 0 032 23 27

6 18.1 6 225.0 105 2.76 3.460 20.22 1 031 15 17

7 14.3 8 360.0 245 3.21 3.570 15.84 0 034 2327

#对除了disp的变量进行排名

mtcars%>%mutate_each(funs(dense_rank,min_rank),-disp)

2、transmute

返回值中不包含原数据集变量,只保留计算转换后的变量。

mtcars%>%mutate(wt_log=log(wt))

mtcars%>%transmute(wt_log=log(wt))

mtcars %>%mutate(displ_l = disp / 61.0237)

mtcars %>%transmute(displ_l = disp / 61.0237)

    雷达图通常在财务报表分析中使用较多,当前在描述性统计分析中,雷达图正在被越来越多的人使用。

    本文利用R语言 ggplot2 的一款扩展主题包——ggradar 包从头开始绘制简单漂亮的雷达图。

一  加载函数包

    ggradar包需要通过 github 来安装,安装方法如下:

devtools::install_github("ricardo-bion/ggradar", dependencies=TRUE)

library(ggradar)

二 创建数据集绘制雷达图

2.1 设定种子,构造了一个区间为0~1,个数为24的4行6列随机数矩阵

set.seed(123)

mydata<-matrix(runif(24,0,1),4,6)

rownames(mydata) <- LETTERS[1:4]

colnames(mydata) <- c("Apple","Google","Amozon","Tencent","Alibaba","Baidu")#使用以上文本向量为矩阵列命名,方便展示

mynewdata<-data.frame(mydata)

Name<-c("USA","CHN","UK","RUS")

mynewdata<-data.frame(Name,mynewdata)

2.2 绘制USA的雷达图

ggradar(mynewdata[1,],grid.line.width = 0.5)

2.3 绘制所有变量的雷达图

ggradar(mynewdata)

三 使用car数据集展示雷达图

利用内置car数据集进行雷达图绘制,主要是对数据进行scale,然后绘制

library(ggradar)

library(scales)

library(tibble)

library(dplyr)

查看最后四种车型,在mpg ,cyl ,disp ,hp ,drat方面的“性能”情况

mtcars %>%rownames_to_column(var="group") %>%#保留行名称

mutate_at(vars(-group),funs(rescale)) %>%tail(4) %>%select(1:6) ->mtcars_radar

绘制雷达图,更改基本参数

ggradar(mtcars_radar, grid.line.width =0.5,axis.label.size=5,group.line.width =1,group.point.size =2)

四 ggradar主要的函数功能

ggradar(plot.data, axis.labels = colnames(plot.data)[-1], grid.min=0,grid.mid =0.5, grid.max=1, centre.y = grid.min- ((1/9) * (grid.max-grid.min)), plot.extent.x.sf =1, plot.extent.y.sf =1.2,x.centre.range =0.02* (grid.max- centre.y), label.centre.y =FALSE,grid.line.width =0.5, gridline.min.linetype ="longdash",gridline.mid.linetype ="longdash", gridline.max.linetype ="longdash",gridline.min.colour ="grey", gridline.mid.colour ="#007A87",gridline.max.colour ="grey", grid.label.size =7,gridline.label.offset = -0.1* (grid.max- centre.y),label.gridline.min=TRUE, axis.label.offset =1.15,axis.label.size =8, axis.line.colour ="grey", group.line.width =1.5,group.point.size =6, background.circle.colour ="#D7D6D1",background.circle.transparency =0.2, plot.legend =if(nrow(plot.data) >1)TRUEelseFALSE, legend.title ="", legend.text.size = grid.label.size)

五 参考资料

http://127.0.0.1:15296/library/ggradar/html/ggradar.html

         找到各企业对于生信工程师的JD,然后根据R,Python,Linux,Bio Pipeline ,NGS 等的要求程度绘制雷达图,就可以直观的知道生信工程师相对更重要的是什么能力了,,,嘿嘿