我想要 R 中的一个函数来检查一列的值是否大于第 75 个分位数,然后在下一列中写入是或否

I want a function in R to check whether values of one column are greater than the 75th quantile then writes yes or no in the next column

我已经尝试了以下公式,但即使我更改了分位数值,它也给出了所有编号。 注意:我有 3 个独立的数据集,我想应用该函数。

outlier<-function(x1,x2){
  q1<-quantile(x1 , .75, na.rm = TRUE)
    if(x1>q1){x2<-"Yes"
    }else{
      x2<-"No"
    
  }

}

我试过了x2<-ifelse(x1>q1,"Yes","No") 在函数内部,但它仍然不起作用。

您可以使用 ifelse 语句并使用 mutate 创建一个新列。

library(dplyr)
set.seed(1)

df <- tibble(x1 = sample(c(1:10), size = 10, replace = T))

df %>% 
  mutate(x2 = ifelse(quantile(x1, 0.75, na.rm = T) < x1, "Yes", "No"))

如果你想要一个函数

library(dplyr)
set.seed(1)

df <- tibble(x1 = sample(c(1:10), size = 10, replace = T), 
             x2 = sample(c(1:10), size = 10, replace = T),
             x3 = sample(c(1:10), size = 10, replace = T),
             x4 = sample(c(1:10), size = 10, replace = T))




outlier<-function(dataframe, quant = 0.75, col = c("x1", "x2")){
  
  dataframe %>% 
    mutate(across(all_of(col), ~ifelse(.x>quantile(.x,0.75), 'Yes', 'No'),
                  .names = '{col}_yes'))

  }

outlier(dataframe = df,quant =  0.25)