我想要 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)
我已经尝试了以下公式,但即使我更改了分位数值,它也给出了所有编号。 注意:我有 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)