Я пробовал следующую формулу, но она дает все нет, даже когда я меняю значение квантиля. ПРИМЕЧАНИЕ. У меня есть 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)
Комментариев нет:
Отправить комментарий