[英]how to return 2 highest score and 2 lowest score based on a data frame in r?
我給出了一堆關於得分的數據,我已經將它們組合起來並計算出平均值,還使用dplyr和%>%將它們從最高到最低排列,但是我嘗試不使用而輸出2個最高得分和最低得分任何數字(我的意思是不想使用for循環> <=特定數字)很容易將1設為最高,將1設為最低,但是不知道如何為2做到這一點! 有人能幫我嗎? 謝謝
您可以使用dplyr的top_n()
函數。
top_n(your_variable, 2)
返回最高的2分, top_n(your_variable, -2)
最低的2分。
變量不需要先排序。
library(tidyverse)
# Create an example data set
df <- tribble(~name, ~score,
'John', 10,
'Mike', 2,
'Mary', 11,
'Jane', 1,
'Jill', 5)
df %>%
arrange(score) %>%
slice(1:2, nrow(.) - 1:0)
# name score
# <chr> <dbl>
# 1 Jane 1
# 2 Mike 2
# 3 John 10
# 4 Mary 11
在基數R中,我們可以使用order
根據scores
對數據進行排序。 要獲得前2名和后2名scores
,我們使用head
和tail
使用@TonyLadson的數據
inds <- order(df$score)
df[c(head(inds, 2), tail(inds, 2)), ]
# name score
# <chr> <dbl>
#1 Jane 1
#2 Mike 2
#3 John 10
#4 Mary 11
要對數據進行子集處理而無需重新排列並保持相同的順序,我們還可以
df[inds %in% c(1, 2, nrow(df) - 1, nrow(df)), ]
或使用dplyr
library(dplyr)
df %>%
arrange(score) %>%
filter(row_number() %in% c(1, 2, n() - 1, n()))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.