在R中基于案件原被告数据集构建邻接矩阵的问题求助
R原被告配对案件数统计解决方案
问题原因
原有代码仅对单条人员记录做宽表转换,未将同一案件下的原告、被告关联到同一行,因此拆分后每行仅能保留单一身份的人员ID,另一身份字段自动填充为NA,无法形成有效原被告配对。
可行实现代码
library(tidyverse) # 拆分原告、被告子集 plaintiff_df <- df %>% filter(Status == "Plaintiff") %>% select(Case, plaintiff = Person) defendant_df <- df %>% filter(Status == "Defendant") %>% select(Case, defendant = Person) # 按案件编号关联得到同案原被告配对 case_pairs <- inner_join(plaintiff_df, defendant_df, by = "Case") # 按原被告对分组统计共同案件数 result <- case_pairs %>% group_by(plaintiff, defendant) %>% summarise(case_count = n(), .groups = "drop")
补充说明
- 若单个案件存在多个原告/被告,代码会自动生成该案件下所有可能的原被告配对,符合身份互换视为不同配对的统计要求
- 如需直接生成邻接矩阵用于网络分析,可在上述结果基础上做宽表转换:
adj_matrix <- result %>% pivot_wider( id_cols = plaintiff, names_from = defendant, values_from = case_count, values_fill = 0 )
内容的提问来源于stack exchange,提问作者Jacob Baisley
相关产品推荐
相关产品推荐

