r - 按组以字符格式汇总金额

标签 r dataframe aggregate

我有一个数据框,其中包含个人之间的货币交易。交易可以是双向的,即A可以向B转账,B也可以向A转账。数据帧的结构如下:

From  To  Amount
A     B   $100
A     C   $40
A     D   $30
B     A   $25
B     C   $70
C     A   $190
C     D   $110

我想总结每对相互进行交易的个人之间的交易总量,结果应该类似于:

Individual_1  Individual_2    Sum
A             B               $125
A             C               $230
A             D               $30
B             C               $70
C             D               $110

我尝试利用包 dplyr 的分组功能,但我认为它不适用于我的情况。

最佳答案

您可以使用 pmin/pmaxFromTo 列进行排序以及 sum 金额 值。

library(dplyr)

df %>%
  group_by(col1 = pmin(From, To), 
           col2 = pmax(From, To)) %>%
  summarise(Amount = sum(readr::parse_number(Amount)))

#  col1  col2  Amount
#  <chr> <chr>  <dbl>
#1 A     B        125
#2 A     C        230
#3 A     D         30
#4 B     C         70
#5 C     D        110

在基本 R 中使用相同的逻辑,您可以执行以下操作:

aggregate(Amount~col1 + col2, 
      transform(df, col1 = pmin(From, To), col2 = pmax(From, To), 
                Amount = as.numeric(sub('$', '', Amount, fixed = TRUE))), sum)

数据

df <- structure(list(From = c("A", "A", "A", "B", "B", "C", "C"), To = c("B", 
"C", "D", "A", "C", "A", "D"), Amount = c("$100", "$40", "$30", 
"$25", "$70", "$190", "$110")), class = "data.frame", row.names = c(NA, -7L))

关于r - 按组以字符格式汇总金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65535162/

相关文章:

r - 将 ave() 与返回向量的函数一起使用

R:使用字典/列表转换数据框列?

r - 如何将 R 中的数据与每行的模式(最常见)值聚合?

java - MongoDB java API 聚合 $lookup 和管道使用变量

r - ergm/statnet 包可以处理丢失的属性数据吗?

r - 在R中串联/合并表

r - 如何从 R 中的 txt 文件中读取矩阵?

python - 从数据帧中删除存储在变量中的系列

python - 在 Spark 中更新数据框列

sql - postgres 中用于计算值的列别名