Удаление дублированных строк в определенных столбцах и агрегирование данных - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть некоторые данные. Вот фиктивный фрейм данных в качестве примера:

Reference = c('A', 'A', 'A', 'B', 'C', 'D', 'E', 'E')
Company = c('Google', 'Google', 'Xbox', 'Nike', 'Apple', 'Samsung', 'Paypal', 'Paypal')
Method = c('Direct', 'Indirect', 'Direct', 'Direct', 'Direct', 'Indirect', 'Direct', 'Indirect')
Payments = c(500, 750, 100, 2000, 1100, 450, 100, 900)
DirectPayment = c(500, 0, 100, 2000, 1100, 0, 100, 0)
IndirectPayment = c(0, 750, 0, 0, 0, 450, 0, 900)

df = data.frame(Reference, Company, Method, Payments, DirectPayment, IndirectPayment)

enter image description here

Если вы посмотрите на ССЫЛКУ А, у Google есть ПРЯМЫЙ и НЕПРЯМЫЙ платеж; и в ССЫЛКЕ E Paypal имеет косвенный и прямой платеж.

Мне нужно избавиться от дубликатов на ССЫЛКЕ и КОМПАНИИ. Т.е. для Google мне нужна только ОДНА строка для ссылки A с прямым платежом в столбце DirectPayment и косвенным платежом в IndirectPayment, т.е.:

anged

Как мне это сделать? Я попробовал pivot_wide, но это не совсем то, что мне нужно здесь.

Спасибо

1 Ответ

2 голосов
/ 23 апреля 2020

А как насчет этого?

library(dplyr)
df %>% 
  group_by(Reference, Company) %>% 
  summarise_if(is.numeric, sum, na.rm = TRUE)

Это дает:

# A tibble: 6 x 5
# Groups:   Reference [5]
  Reference Company Payments DirectPayment IndirectPayment
  <fct>     <fct>      <dbl>         <dbl>           <dbl>
1 A         Google      1250           500             750
2 A         Xbox         100           100               0
3 B         Nike        2000          2000               0
4 C         Apple       1100          1100               0
5 D         Samsung      450             0             450
6 E         Paypal      1000           100             900
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...