Dataframe: сортировка по убыванию не работает

У меня есть dataframe:

CityVsPrice = data.frame (Город, цена)

City      Price

New York  10000
New York  15000
New York  12000
Madison   800
Lodi      8000
Chico     9000
Redlands  200

Затем я хочу сортировать этот список по цене, предоставляя мне лучшие 3 города по цене. Поэтому в идеале Нью-Йорк появлялся только один раз, за ??ним следовал Чико, а затем Лоди. Возможно, еще один способ приблизиться к этому - принять самое высокое значение для каждого города, а затем сортировать нисходящий и выбрать верх 3. Любой простой способ сделать это?

Заранее спасибо!

r,

0

Ответов: 3


1

tidyverse делает это очень хорошо, вам это понравится :)

https://dplyr.tidyverse.org/

library(dplyr)
data.frame(City,Price) %>% 
  group_by(City) %>% 
  top_n(1, Price) %>% 
  ungroup() %>% 
  top_n(3, Price)

1

Итак, это, наконец, сработало:

Price=as.numeric(as.character(Price))

ByPrice<- data.frame(aggregate(Price ~ City, data = CityVsPrice, max))

1

Есть способы сделать это в базе R кратко, но здесь идет решение, которое использует data.table:

setDT(CityVsPrice)[, .(Price = max(Price)), by=City][order(-Price)][1:3]
       City Price
1: New York 15000
2:    Chico  9000
3:     Lodi  8000
р,
Похожие вопросы
Яндекс.Метрика