#r #dplyr #tidyverse #data-manipulation
Вопрос:
Ищу способ выбрать 3 верхние И 3 нижние строки по значению. Я пытался использовать slice_max() в сочетании с slice_min (), но безуспешно.
id value a 0.9 b 0.2 c -0.4 d -0.9 e 0.6 f 0.8 g -0.3 h 0.1 i 0.2 j 0.5 k -0.2 # Desired output: lt;brgt; a 0.9 f 0.8 e 0.6 d -0.9 c -0.4 g -0.3
Ответ №1:
dplyr
dat %gt;% filter(!between(dense_rank(value), 4, n() - 4)) # id value # 1 a 0.9 # 2 c -0.4 # 3 d -0.9 # 4 e 0.6 # 5 f 0.8 # 6 g -0.3
или
dat %gt;% arrange(value) %gt;% slice( unique(c(1:3, n() - 0:2)) )