我使用tidyverse包尝试了此代码,以基于sd过滤异常值。
rt_trimmed_data_Dec = data_Dec %>%
group_by(Time_of_Testing, Item_Type, Group) %>%
summarise(RT_mean = mean(RT, na.rm=TRUE), RT_sd = sd(RT, na.rm=TRUE))%>%
ungroup() %>%
mutate(rt_high = RT_mean + (2.5 * RT_sd)) %>%
mutate(rt_low = RT_mean - (2.5 * RT_sd))
然后,我尝试将两个数据框合并,以应用过滤。
data_Dec_RT = data_Dec %>%
inner_join(rt_trimmed_data_Dec) %>%
filter(rt < rt_high) %>%
filter(rt > rt_low)
但是后来我得到了这个错误
Error: `by` required, because the data sources have no common variables
调用
rlang::last_error()
以查看回溯。 > rlang :: last_error()消息:by
是必需的,因为数据源没有公共变量类别:rlang_error
回溯:1. dplyr :: inner_join(。,rt_trimmed_data_Dec)9. dplyr :::: common_by.NULL(by,x,y)11. dplyr ::: bad_args(“ by”,“是必需的,因为数据源没有公共变量”)12. dplyr ::: glubort(fmt_args(args),...,.envir = .envir)13. dplyr :: inner_join(。,rt_trimmed_data_Dec)。
请提供有关如何解决此问题的建议,非常感谢您的帮助。
library(dplyr)
data_Dec %>%
group_by(Time_of_Testing, Item_Type, Group) %>%
filter(between(RT, mean(RT, na.rm=TRUE) - (2.5 * sd(RT, na.rm=TRUE)),
mean(RT, na.rm=TRUE) + (2.5 * sd(RT, na.rm=TRUE))))