使用R对已删除的反向副本及其未删除的反向原件的列值求和(且仅适用于)
我有一个包含犯罪实例的数据集,每个实例都有一个位置(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')、Weight(数字)。Primary.Types是通过合并重复表来创建edgelist的,因此存在反向重复项 病房日期 Primary.Type.x 初级.y型 重量 1 2017-01-03 盗窃 抢劫 1. 1 2017-01-03 抢劫 盗窃 1. 2 2017-01-05 电池 盗窃 2. 2 2017-01-05 盗窃 电池 2.使用R对已删除的反向副本及其未删除的反向原件的列值求和(且仅适用于),r,string,dataframe,lapply,inverse-match,R,String,Dataframe,Lapply,Inverse Match,我有一个包含犯罪实例的数据集,每个实例都有一个位置(wardId)、犯罪类型(Primary.type)和日期。最终的目标是将其转化为以Primary.Type为节点的网络,其边的权重取决于它们共享Primary.Type和Ward.Date唯一组合的次数(当天发生在同一病房的两类犯罪是一种联系,这两类犯罪在当天发生的次数决定了权重) 在Ward.Date、wardId和Date合并后,我有一个edgelist,其中包含Ward.Date('wardId yyyy mm dd')、Primary
您可以对列
Primary.Type.x
和Primary.Type.y
中的值进行排序,并使用sum
的Weight
对数据进行汇总
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
这也可以用base 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)