Группировка строк с некоторыми требованиями

Мне нужно создать модифицированный набор данных, сгруппировав несколько строк вместе. Мне нужно это с 3 требованиями:

(посмотрите на изображение ниже, чтобы понять названия столбцов)

  1. То же самое "дата_время", затем
  2. Тот же «Тип», затем
  3. Просуммируйте строки в столбце «Количество».

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

Может ли кто-нибудь помочь с тем, какие инструменты для обработки данных лучше всего подходят для решения такой проблемы?

Я хочу преобразовать это: Группировка строк с некоторыми требованиями

к тому, что: Группировка строк с некоторыми требованиями

Для воспроизведения первого набора данных:

structure(list(date_time = structure(c(1517516099, 1517516099, 
1517516099, 1517516099, 1517516095, 1517516092, 1517516092, 1517516092, 
1517516092, 1517516092, 1517516092, 1517516088, 1517516084, 1517516081, 
1517516074, 1517516073, 1517516071, 1517516068, 1517516061, 1517516053
), class = c("POSIXct", "POSIXt"), tzone = ""), Buyer_from = c("127 - TULLETT PREBON", 
"127 - TULLETT PREBON", "127 - TULLETT PREBON", "3 - XP Investimentos CCTVM S/A", 
"85 - BTG Pactual CTVM S.A.", "85 - BTG Pactual CTVM S.A.", "147 - ATIVA INVESTIMENTOS S.A. CTCV", 
"147 - ATIVA INVESTIMENTOS S.A. CTCV", "147 - ATIVA INVESTIMENTOS S.A. CTCV", 
"147 - ATIVA INVESTIMENTOS S.A. CTCV", "147 - ATIVA INVESTIMENTOS S.A. CTCV", 
"147 - ATIVA INVESTIMENTOS S.A. CTCV", "147 - ATIVA INVESTIMENTOS S.A. CTCV", 
"115 - H.COMMCOR DTVM LTDA", "115 - H.COMMCOR DTVM LTDA", "8 - UBS BRASIL CCTVM S/A", 
"3 - XP Investimentos CCTVM S/A", "8 - UBS BRASIL CCTVM S/A", 
"8 - UBS BRASIL CCTVM S/A", "8 - UBS BRASIL CCTVM S/A"), Price = c(3176.5, 
3176.5, 3176.5, 3176.5, 3177, 3177, 3177.5, 3177.5, 3177.5, 3177.5, 
3177.5, 3177.5, 3177.5, 3177.5, 3177.5, 3178, 3178.5, 3178, 3178, 
3178), Quantity = c(10, 5, 50, 5, 5, 5, 55, 5, 5, 5, 30, 70, 
30, 10, 10, 5, 5, 10, 5, 10), Seller_from = c("85 - BTG Pactual CTVM S.A.", 
"122 - BGC LIQUIDEZ DTVM", "85 - BTG Pactual CTVM S.A.", "3 - XP Investimentos CCTVM S/A", 
"88 - CM Capital Markets CCTVM LTDA", "122 - BGC LIQUIDEZ DTVM", 
"122 - BGC LIQUIDEZ DTVM", "122 - BGC LIQUIDEZ DTVM", "8 - UBS BRASIL CCTVM S/A", 
"8 - UBS BRASIL CCTVM S/A", "92 - RENASCENÇA DTVM LTDA", "92 - RENASCENÇA DTVM LTDA", 
"85 - BTG Pactual CTVM S.A.", "85 - BTG Pactual CTVM S.A.", "122 - BGC LIQUIDEZ DTVM", 
"122 - BGC LIQUIDEZ DTVM", "3 - XP Investimentos CCTVM S/A", 
"77 - CITIGROUP GMB CCTVM S.A.", "386 - RICO INVESTIMENTOS - GRUPO XP", 
"386 - RICO INVESTIMENTOS - GRUPO XP"), Type = structure(c(4L, 
4L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 4L, 1L, 4L, 4L, 4L, 1L, 
4L, 4L, 4L), .Label = c("Buyer", "3", "4", "Seller"), class = "factor")), row.names = c(NA, 
20L), class = "data.frame")
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это избавит вас от столбца продавца_от, но агрегирует его в соответствии с вашими спецификациями:

library(dplyr)
df %>% group_by(date_time, Price, Buyer_from, Type) %>% summarize(Quantity = sum(Quantity))

или в data.table

library(data.table)
setDT(df)
df[,.(Quantity = sum(Quantity)),by=.(date_time,Price,Buyer_from,Type)]

С помощью Dplyr мне удалось убрать вашего продавца из колонки!

library(dplyr)
#identify what is repeated
df = df %>% group_by(date_time, Buyer_from, Price) %>% mutate(n = n())
#create 2 dataframes to distingiush what is repeated
once = filter(df, n==1)
dups = filter(df, n>1)
#collapse our duplicates
dups = dups %>% group_by(date_time,Buyer_from,Price,Type) %>% summarize(Quantity = sum(Quantity))
#add back our seller_from column
dups$Seller_from = NA

#remove unnecessary columns from nondups
once = select(once, date_time, Buyer_from, Price, Quantity, Seller_from, Type)

#bring everything back together
final = rbind(once,dups)

# Groups:   date_time, Buyer_from, Price [14]
   date_time           Buyer_from                          Price Quantity Seller_from                         Type  
   <dttm>              <chr>                               <dbl>    <dbl> <chr>                               <fct> 
 1 2018-02-01 15:14:59 3 - XP Investimentos CCTVM S/A      3176.        5 3 - XP Investimentos CCTVM S/A      Seller
 2 2018-02-01 15:14:55 85 - BTG Pactual CTVM S.A.          3177         5 88 - CM Capital Markets CCTVM LTDA  Seller
 3 2018-02-01 15:14:52 85 - BTG Pactual CTVM S.A.          3177         5 122 - BGC LIQUIDEZ DTVM             Seller
 4 2018-02-01 15:14:48 147 - ATIVA INVESTIMENTOS S.A. CTCV 3178.       70 92 - RENASCENÇA DTVM LTDA           Seller
 5 2018-02-01 15:14:44 147 - ATIVA INVESTIMENTOS S.A. CTCV 3178.       30 85 - BTG Pactual CTVM S.A.          Buyer 
 6 2018-02-01 15:14:41 115 - H.COMMCOR DTVM LTDA           3178.       10 85 - BTG Pactual CTVM S.A.          Seller
 7 2018-02-01 15:14:34 115 - H.COMMCOR DTVM LTDA           3178.       10 122 - BGC LIQUIDEZ DTVM             Seller
 8 2018-02-01 15:14:33 8 - UBS BRASIL CCTVM S/A            3178         5 122 - BGC LIQUIDEZ DTVM             Seller
 9 2018-02-01 15:14:31 3 - XP Investimentos CCTVM S/A      3178.        5 3 - XP Investimentos CCTVM S/A      Buyer 
10 2018-02-01 15:14:28 8 - UBS BRASIL CCTVM S/A            3178        10 77 - CITIGROUP GMB CCTVM S.A.       Seller
11 2018-02-01 15:14:21 8 - UBS BRASIL CCTVM S/A            3178         5 386 - RICO INVESTIMENTOS - GRUPO XP Seller
12 2018-02-01 15:14:13 8 - UBS BRASIL CCTVM S/A            3178        10 386 - RICO INVESTIMENTOS - GRUPO XP Seller
13 2018-02-01 15:14:52 147 - ATIVA INVESTIMENTOS S.A. CTCV 3178.       45 NA                                  Buyer 
14 2018-02-01 15:14:52 147 - ATIVA INVESTIMENTOS S.A. CTCV 3178.       55 NA                                  Seller
15 2018-02-01 15:14:59 127 - TULLETT PREBON                3176.       65 NA                                  Seller

Вы знаете, как их объединить? возможно, вставьте значения, такие как значения «-» или «NA». Я действительно борюсь с этой манипуляцией данными

Artur Dutra 28.06.2019 23:09

Я просто добавил, чтобы вы держали продавца подальше!

Jacky 29.06.2019 00:10

Другие вопросы по теме