我的数据集包含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)
谢谢。
答案 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))