【发布时间】:2021-05-19 11:51:47
【问题描述】:
我有以下 1 月至 2 月三个月的交易数据:
tab.m <- structure(list(Date = structure(c(1580947200, 1581033600, 1581120000,
1581206400, 1581292800, 1581379200, 1581465600, 1581552000, 1581638400,
1583798400, 1583884800, 1583971200, 1584057600, 1584144000, 1584230400,
1584316800, 1584403200, 1587168000, 1587254400, 1587340800, 1587427200,
1587513600, 1587600000, 1587686400), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), Month = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4), `Product Type` = c("LIZX",
"LIZX", "LIZX", "LIZX", "LIZX", "LIZX", "LIZX", "LIZX", "LIZX",
"LIZX", "LIZX", "LIZX", "LIZX", "LIZX", "LIZX", "LIZX", "LIZX",
"LIZX", "LIZX", "LIZX", "LIZX", "LIZX", "LIZX", "LIZX"), Account = c(931,
931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
931, 931, 931, 931, 931, 931, 931, 931, 931, 931), Subsidiary = c(124,
124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
124, 124, 124, 124, 124, 124, 124, 124, 124, 124), Description = c("Transaction",
"Transaction X", "Transaction", "Transaction", "Transaction X",
"Transaction", "Transaction", "Transaction", "Transaction", "Transaction",
"Transaction", "Transaction", "Transaction", "Transaction", "Transaction",
"Transaction", "Transaction", "Transaction", "Transaction", "Transaction",
"Transaction", "Transaction", "Transaction", "Transaction"),
`Policy Number` = c(42057926, 42057926, 42057926, 42057926,
42057926, 42057926, 42057926, 42057926, 42057926, 42060466,
42060466, 42060466, 42060466, 42060466, 42060466, 42060466,
42060466, 42060467, 42060467, 42060467, 42060467, 42060467,
42060467, 42060467), Amount = c(10, -10, 20, -20, 30, 24,
23, 22, -0.56, 1, -1, 2, -2, 2, 3, 4, -1, 3, -3, -3, -3,
-3, -3, -3)), row.names = c(NA, -24L), class = c("tbl_df",
"tbl", "data.frame"))
我使用 split() 函数按月份和政策编号对交易的数据框进行分组:
grouped = split(tab.m,list(tab.m$Month,tab.m$`Policy Number`))
在每个组中,有成对的冲销交易,其中有一个正/负金额,以及之前/之后的另一行,与该完全相同的金额相反。我想从每个组中删除这些交易对,然后将这些组合并回一个数据框。可能是正面交易先出现,然后是负面交易,反之亦然。
请注意,逆转交易对并不总是相邻的。
【问题讨论】:
-
有一笔交易+3.00,然后多笔交易-3.00。您如何确定哪个是反转?
-
多个-3.00事务中的哪一个被移除无关紧要,只要移除其中一对即可。
-
对我的意思是一对-3和+3行
标签: r dataframe dplyr transactions data-cleaning