如何排除R中set的大部分不相似值?



我有一个看起来像这样的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

最新更新