返回最接近的值到R中的特定列

时间:2019-11-04 18:03:47

标签: r dplyr

我的数据集包含500个观测值。这是数据结构的任何示例:

df <- data.frame(rating_mean=c(3.6, 4.0, 3.7, 4.8, 3.9, 5.1, 4.1, 4.3 ),
             actual_truth=c("true", "false", "false", "true", "true", "false", "false", "true"))

对于“真”刺激,我想返回60个等级,其rating_mean最接近3.5的值,而对于“假”刺激,我要返回相同的项(总共120个)。到目前为止,我有这个,但它不正确

df50 <- df %>%   group_by(actual_truth) %>%   top_n(n = 60, wt = rating_mean - 3.5)

谢谢。

1 个答案:

答案 0 :(得分:2)

一个选择是arrange按“ actual_truth”和“ {rating} mean”与阈值之间的abs分差,然后按“ actual_truth”分组,slice前60个观察值

library(dplyr)
df %>% 
   arrange(actual_truth, abs(rating_mean - 3.5)) %>% 
   group_by(actual_truth) %>%
   slice(seq_len(60))