编写R函数

时间:2019-01-29 04:14:26

标签: r dplyr sapply

我想编写一个R函数,为我提供观察值的第10个百分点的值。我想将此功能与sapply一起使用。像mean一样,sapply

sapply(1 : n, function(i) mean(a1))

例如我有100个值,而第10个百分位数是10,我想打印第10行上的值。

X
45
80
70
56
78
78
56
90
35
190

..........最多100个值

所需的输出:在第10行打印值,即以上列中的190

我希望函数计算我的100个观测值的前10个百分位数,然后再打印该位置上的值。

2 个答案:

答案 0 :(得分:0)

所需的功能将如下所示:

give_quant_value <- function(vec, quantile) {
    return(vec[quantile(1:length(vec),p=quantile,type=1)])
}

其中
    -vec是感兴趣的媒介
    -quantile是感兴趣的分位数

证明:

set.seed(42)
a1 <- rnorm(100)
give_quant_value(a1, 0.1)
-0.062714099052421

在终端上键入quantile时,您可能会了解有关?quantile功能的更多信息

答案 1 :(得分:0)

这是我写的一个简单函数:它将数据作为data.frame对象。

select_percentile<-function(df,n){
  df<-df
  nth<-(n/nrow(df))*100
  return(df[nth,])
}

使用其他答案中的数据:

 set.seed(42)
   a1 <- rnorm(100)
    df1<-as.data.frame(a1)
    select_percentile(df1,10)

结果:

#[1] -0.0627141