【问题标题】:Summing column values for (and only for) deleted reversed duplicates with their undeleted reversed originals with R将(且仅用于)已删除的反向重复项与未删除的反向原件的列值与 R 相加
【发布时间】:2021-03-09 02:18:57
【问题描述】:

我有一个包含犯罪实例的数据集,每个实例都有一个位置 (wardId)、犯罪类型 (Primary.Type) 和日期。最终目标是将其变成以 Primary.Type 为节点的网络,其边的权重取决于它们共享 Primary.Type 和 Ward.Date 的独特组合的次数(发生在当天同一个病房是一个连接,这个组合当天发生的次数决定权重)。

在Ward.Date上合并后,wardId和Date我有一个edgelist包含Ward.Date('wardId yyyy-mm-dd')、Primary.Type.x('string')、Primary.Type.y('string '),重量(数字)。 Primary.Types 是通过合并重复表以创建边缘列表而得出的,因此存在反向重复。

Ward.Date Primary.Type.x Primary.Type.y Weight
1 2017-01-03 Theft Robbery 1
1 2017-01-03 Robbery Theft 1
2 2017-01-05 Battery Burglary 2
2 2017-01-05 Burglary Battery 2

在一些帮助 (Deleting reversed duplicates with R) 的帮助下,我设法删除了具有相同值 Ward.Date 的 Primary.Type.x 和 Primary.Type.y 的反向重复值:

      test <- edgelist.primary.wards[!duplicated(lapply(as.data.frame(t(edgelist.primary.wards), 
          stringsAsFactors=FALSE), sort)),]

但需要注意的是,结果表也删除了反向对的权重,而此计数未汇总到保留对的权重中:

Ward.Date Primary.Type.x Primary.Type.y Weight
1 2017-01-03 Theft Robbery 1
2 2017-01-05 Burglary Battery 2

相反,目标输出应该是:

Ward.Date Primary.Type.x Primary.Type.y Weight
1 2017-01-03 Theft Robbery 2
2 2017-01-05 Burglary Battery 4

期待看到您的建议!

【问题讨论】:

    标签: r string dataframe lapply inverse-match


    【解决方案1】:

    您可以使用sumWeightPrimary.Type.xPrimary.Type.ysummarise 列中的值进行排序。

    library(dplyr)
    
    edgelist.primary.wards %>%
      group_by(Ward.Date, 
               Type1 = pmin(Primary.Type.x, Primary.Type.y), 
               Type2 = pmax(Primary.Type.x, Primary.Type.y)) %>%
      summarise(Weight = sum(Weight, na.rm = TRUE)) -> result
    
    result
    

    这也可以用基数 R 写成:

    aggregate(Weight~Ward.Date + Type1 + Type2, transform(edgelist.primary.wards, 
              Type1 = pmin(Primary.Type.x, Primary.Type.y), 
              Type2 = pmax(Primary.Type.x, Primary.Type.y)), sum, na.rm = TRUE)
    

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      相关资源
      最近更新 更多