Специальная фильтрация данных в R - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь отфильтровать следующий фрейм данных:

calendar <- data.frame(Account_Num,Account_Num_Spec,Billing_Num,Transaction_Amt2,color,CAL_DATE2)

следующим образом:

Для всех строк, имеющих одинаковое содержимое в "Account_Num_Spe c", «Billing_Num» и «color» - отфильтруйте их в одну строку с суммой «Transaction_Amt2» и первой самой старой датой в «CAL_DATE2».

Например,

    Ac_Num   AC_Num_Spec  Bill_Num   Amount   Color   Date
1    1162     1162-001     620919      10      red    10/12/19 
2    1179     1179-001     790719      10      red    11/12/19
3    1172     1172-001     721119      10      red    12/12/19
4    1162     1162-001     620919      -5      red    09/12/19
5    1162     1162-001     621019      10      red    11/12/19
6    1179     1179-001     791119      10      green  11/12/19
7    1162     1162-002     620919      10      red    12/12/19
8    1179     1179-001     791079      10      green  10/12/19

переходит к:

    Ac_Num   AC_Num_Spec  Bill_Num   Amount   Color   Date
1    1162     1162-001     620919       5      red    09/12/19 
2    1179     1179-001     790719      10      red    11/12/19
3    1179     1179-001     791119      10      red    12/12/19
4    1172     1172-001     721119      10      red    12/12/19
5    1162     1162-001     621019      10      red    11/12/19
6    1179     1179-001     791119      10      green  11/12/19
7    1162     1162-002     620919      10      red    12/12/19
8    1179     1179-001     791079      10      green  10/12/19

1 Ответ

1 голос
/ 05 февраля 2020

Я считаю, что использование group_by и summarize в пакете dplyr должно работать для того, что вы просите

calendar %>%
    group_by(Account_Num,Account_Num_Spec,Billing_Num, color) %>%
    summarize(Amount = sum(Amount),
              Date = max(Date))

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

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