Как объединить разные строки кадра данных, обращаясь к ним через имя фактора, который находится в другом столбце? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть фрейм данных с двумя переменными, первая переменная - это факторы, а вторая числовая.Я хочу суммировать несколько строк на основе имени фактора в этой строке.

Я хочу, чтобы результат суммы был сохранен в строке с более высоким значением в начале и удалить оставшуюся частьстроки, которые были добавлены.Фрейм данных упорядочен.Как я мог получить что-то подобное?

Например:

I have:                         I want:

Things     Numbers             Things     Numbers

Bottle       35                 Bottle       35
Pencil       27                 Paper        32
Paper        24                 Pencil       29
Pen          13                 Pen          13
Phone        10                 Phone        10
Apple         9                 Apple        9
Chair         7
Bus           2
Kitchen       1
Paper=Paper+Chair+Kitchen
Pencil=Pencil+bus

1 Ответ

1 голос
/ 21 мая 2019
library(tidyverse)

df <- tibble::tribble(
    ~Things, ~Numbers,
   "Bottle",       35,
   "Pencil",       27,
    "Paper",       24,
      "Pen",       13,
    "Phone",       10,
    "Apple",        9,
    "Chair",        7,
      "Bus",        2,
  "Kitchen",        1
  )

df %>%

  # might have to convert to character first...
  # mutate(Things = as.character(Things)) %>%

  mutate(
    Things = case_when(
      Things %in% c("Paper", "Chair", "Kitchen") ~ "Paper",
      Things %in% c("Pencil", "Bus") ~ "Pencil",
      TRUE ~ Things
    )
  ) %>%
  group_by(Things) %>%
  summarise(
    Numbers = sum(Numbers)
  ) %>%
  arrange(desc(Numbers))
#> # A tibble: 6 x 2
#>   Things Numbers
#>   <chr>    <dbl>
#> 1 Bottle      35
#> 2 Paper       32
#> 3 Pencil      29
#> 4 Pen         13
#> 5 Phone       10
#> 6 Apple        9

Создано в 2019-05-21 пакетом представ (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...