Как получить первый ряд, который появляется первым в данных? - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть набор данных, показанный ниже:

data <- tribble(
  ~shop_name, ~products, ~category_name,
  "A",         1,          "Game",
  "A",         1,          "Book",         
  "A",         2,          "Electronic",
  "A",         3,          "Home", 
  "B",         5,          "Game",
  "B",         5,          "Electronic",
  "B",         8,          "Home",
  "C",         1,          "Book",
  "C",         7,          "Game",
  "C",         9,          "Game",
)

Я хотел бы увидеть топ-1 категории на основе продуктов, и закодировал это:

data %>% 
  group_by(shop_name) %>% 
  top_n(1, products) %>% 
  mutate(top_category = toString(category_name))

Но потому что продуктыиногда имеют одинаковые значения для каждого shop_name, в "top_category" есть несколько названий категорий. Как получить первый ряд, который появляется первым в наборе данных?

Ответы [ 2 ]

2 голосов
/ 01 ноября 2019

Использование dplyr::first:

data %>% 
  group_by(shop_name) %>% 
  summarise(products = first(products),
            category_name = first(category_name))

Чтобы сохранить все столбцы без их явного указания *

data %>% 
  group_by(shop_name) %>% 
  summarise_all(first)

Вывод

# shop_name products category_name
#  <chr>        <dbl> <chr>        
# 1 A                1 Game         
# 2 B                5 Game         
# 3 C                1 Book 
0 голосов
/ 01 ноября 2019
data %>% 
  group_by(shop_name) %>% 
  top_n(1, desc(products)) %>%
  plyr::ddply( "shop_name", head, 1)
  shop_name products category_name
1         A        1          Game
2         B        5          Game
3         C        1          Book
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...