我有一个看起来像这样的df,但是更大:
values <- c(22,16,23,15,14.5,19)
groups <- rep(c("a","b"), each = 3)
df <- data.frame(groups, values)
我每组有1-3个值(在示例中,a组有3个值,b组有3个值)。我现在想要从每组中排除最不相似的值。在这个例子中,我想要排除a 16和b 19。
谢谢你的帮助!
如果你正在寻找一个值,则可以删除与每组平均值距离最大的观测值:
df %>%
group_by(groups) %>%
mutate(dist = abs(values - mean(values))) %>%
filter(dist != max(dist))
# A tibble: 4 × 3
# Groups: groups [2]
groups values dist
<chr> <dbl> <dbl>
1 a 22 1.67
2 a 23 2.67
3 b 15 1.17
4 b 14.5 1.67