在R的data.table中基于ID、N列生成Code列的唯一两两组合
R data.table分组生成两两组合并保留分组列的实现方法
首先确保已加载data.table包,具体实现步骤如下:
步骤1:构造示例数据
library(data.table) dt <- data.table( ID = c("1","1","1","2","2"), Code = c("A","B","C","B","C"), N = c("3","3","3","2","2") )
步骤2:核心计算逻辑
利用data.table的分组语法,按ID和N列分组后,在每个分组内对Code列生成两两无序组合,自动保留分组列信息:
result <- dt[, .(Combinations = combn(Code, 2, paste, collapse = ".")), by = .(ID, N)]
结果说明
运行后得到的输出结构如下,完全匹配要求的三列格式:
> result ID N Combinations 1: 1 3 A.B 2: 1 3 A.C 3: 1 3 B.C 4: 2 2 B.C
如果需要调整组合的拼接顺序,比如要得到C.A而非A.C,或是要生成有序排列(同时保留A.B和B.A),可以调整combn的输出逻辑,或者替换为排列生成函数即可。
内容的提问来源于stack exchange,提问作者chay
相关产品推荐
相关产品推荐

