如何正确删除r中特定列表元素的异常值?

如何正确删除r中特定列表元素的异常值?,r,time-series,lapply,outliers,R,Time Series,Lapply,Outliers,我试图删除嵌套在分组数据帧列表中的两个特定列(var1和var2)的异常值 对于此任务,我正在使用dplyr中的filter()函数和grDevices中的boxplot.stats 这就是我迄今为止所尝试的: library(dplyr) library(grDevices) ########### converting initial df to a list of groups ###################### split_tibble <- function(tibb

我试图删除嵌套在分组数据帧列表中的两个特定列(
var1
var2
)的异常值

对于此任务,我正在使用
dplyr
中的
filter()
函数和
grDevices
中的
boxplot.stats

这就是我迄今为止所尝试的:

library(dplyr)
library(grDevices)

########### converting initial df to a list of groups ######################
split_tibble <- function(tibble, col = 'col') tibble %>% split(., .[, col])
dflist <- split_tibble(df, 'decil')

####### applying function to remove outliers for all list elements ######

dflist <- lapply(dflist , function(df) filter(!var1 %in% 
                                       boxplot.stats(var1)$out) %>%
                                       filter(!var2 %in%
                                       boxplot.stats(var2)$out))

库(dplyr)
图书馆(GR设备)
###########将初始df转换为组列表######################
拆分不可拆分的%split(,,,col])

dflist您可以使用dplyr中的新行操作一步一步地执行此操作

library(tidyverse)

df %>%
  ungroup() %>% 
  nest_by(decil) %>% 
  mutate(out_var1 =  list(boxplot.stats(data$var1)$out),
         out_var2 =  list(boxplot.stats(data$var2)$out),
         filtered_df = list(data %>% filter(var1 %in% out_var1 %>% `!`,
                                            var2 %in% out_var2 %>% `!`))) %>% 
  select(decil,filtered_df) %>% 
  unnest(filtered_df) %>% 
  ungroup()

您的
函数(df)
不可用;t依赖于
df
。一开始就需要
df%>%
吗?是的,事实上,在开始时缺少
df%>%
。我尽可能地将过程分开,这样你会更容易理解,但你可以直接解决一个df,然后直接在变异时传递该解决方案
library(tidyverse)

df %>%
  ungroup() %>% 
  nest_by(decil) %>% 
  mutate(out_var1 =  list(boxplot.stats(data$var1)$out),
         out_var2 =  list(boxplot.stats(data$var2)$out),
         filtered_df = list(data %>% filter(var1 %in% out_var1 %>% `!`,
                                            var2 %in% out_var2 %>% `!`))) %>% 
  select(decil,filtered_df) %>% 
  unnest(filtered_df) %>% 
  ungroup()