基于日期时间匹配MixedGroup并生成分组及匹配编号列的技术问询
数据集进阶处理实现思路
原始数据集
Date TimeObserved IndividualsObserved Group 01/01/2018 09.00 Elliot, Azur, Noir MixedGroup 01/01/2018 09.00 Azur, Bleue, Rouge GroupB 02/01/2018 09.00 Chapman, PJ, Jackson GroupA 02/01/2018 09.00 Mississippi, Missouri GroupC 03/01/2018 10.00 Eben, Azur, Bleue, Noir GroupB 03/01/2018 10.00 Eben, Azur, Bleue GroupB 03/01/2018 10.00 Eben, Azur, PJ, Noir MixedGroup 03/01/2018 10.00 Chapman, Bowie, Shakira GroupA 03/01/2018 10.00 Murray, Mississippi, Mia GroupC 04/01/2018 10.00 Mississippi, Mia GroupC 04/01/2018 10.00 Murray, Azur, Eben MixedGroup 04/01/2018 10.00 Shakira, Jackson, Bowie GroupA 04/01/2018 10.00 Bleue, Noir, Rouge GroupB
组成员定义
groupA = c("Chapman", "PJ", "Jackson", "Elliot", "Bowie", "Shakira") groupB = c("Azur", "Bleue", "Rouge", "Noir", "Eben") groupC = c("Mississippi", "Missouri", "Murray", "Mia")
需求说明
识别同一日期和时间下包含MixedGroup的条目组,添加Group1、Group2列标识混合涉及的分组;同时生成MatchNumber列,为同日期时间下混合组关联的所有条目分配统一编号。
实现步骤
1. 按日期+时间分组,标记含MixedGroup的分组
用数据处理工具(如dplyr)按Date+TimeObserved对数据集分组,新增标记列判断当前分组是否存在Group == 'MixedGroup'的条目。
2. 解析MixedGroup条目涉及的分组
对每个MixedGroup条目,拆分IndividualsObserved字段为人员列表,逐个匹配到对应的预定义组(groupA/groupB/groupC),去重后得到该混合组涉及的分组集合(比如{A,B}),将结果分别存入Group1、Group2列(多组混合可扩展更多列)。
3. 分配MatchNumber
- 对所有包含MixedGroup的日期+时间分组,按出现顺序分配唯一递增的
MatchNumber(从1开始)。 - 将该编号关联到同日期+时间下的所有条目;无MixedGroup的分组,
MatchNumber设为NA。
4. 补全非MixedGroup条目的分组列
对非MixedGroup的条目,根据其Group字段直接填充Group1(如GroupA对应A、GroupB对应B),Group2设为NA。
5. 整理输出格式
调整列顺序与目标输出一致,统一NA值的显示格式。
内容的提问来源于stack exchange,提问作者MIGUEL
相关产品推荐
相关产品推荐

