top_n для 2 условий - PullRequest
       27

top_n для 2 условий

0 голосов
/ 24 октября 2019

У меня вопрос по поводу функции top_n dplyr. Как использовать функцию top_n для извлечения двух значений на основе двух столбцов.

Следующий пример: у меня есть фрейм данных DT. Теперь я хочу извлечь 5 верхних рядов. Но я хочу сначала заказать его на основе Y. А затем на основе X. Так что в конце дня я получаю фрейм данных, такой как RESULT. Спасибо за вашу помощь!

X<-c(2,8,7,6,4,4,3)
Y<-c(10,9,9,8,8,8,8)
DT<-data.frame(Term,X,Y)```

# What I tried so far
DT %>% top_n(n=5)
DT %>% top_n(n=5, w=X)
DT %>% top_n(n=5) %>% top_n(n=5, w=X)

# What I want to have
X<-c(2,8,7,6,4,4)
Y<-c(10,9,9,8,8,8)
Result<-data.frame(Term,X,Y)

1 Ответ

2 голосов
/ 24 октября 2019

top_n может использоваться только для 1 переменной. Вы используете аранжировать затем голову, например:

df =data.frame(
Term = sample(letters,20,replace=T),
X=sample(1:5,20,replace=T),
Y=sample(1:5,20,replace=T)
)
# if you want the top 5 values
df %>% arrange(desc(X),desc(Y)) %>% head(5)
# if you want top 5 unique values, i.e ties count as 1
df %>% arrange(desc(X),desc(Y)) %>%
mutate(rank=cumsum(!duplicated(.))) %>% filter(rank<=5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...