R 为数据帧中的等效行分配唯一ID
我想根据两个(或更多)变量的唯一组合来计算R 为数据帧中的等效行分配唯一ID,r,dataframe,combinations,permutation,R,Dataframe,Combinations,Permutation,我想根据两个(或更多)变量的唯一组合来计算id变量。考虑下面的简单例子: # Example dataframe mydf <- data.frame(var1 = LETTERS[c(1, 2, 1)], var2 = LETTERS[c(2, 1, 3)]) mydf # var1 var2 # A B # B A # A C 有什么建议吗?我们可以按行排序,用重复的创建一个逻辑的向量,然后得到总和 cbind(mydf, cid = cumsum(!duplic
id
变量。考虑下面的简单例子:
# Example dataframe
mydf <- data.frame(var1 = LETTERS[c(1, 2, 1)], var2 = LETTERS[c(2, 1, 3)])
mydf
# var1 var2
# A B
# B A
# A C
有什么建议吗?我们可以
按行排序
,用重复的
创建一个逻辑的向量
,然后得到总和
cbind(mydf, cid = cumsum(!duplicated(t(apply(mydf, 1, sort)))))
您可以受益于
因子在基数R中键入:
mydf$cid <- as.numeric(factor(apply(mydf,1,function(x) paste0(sort(x), collapse = ""))))
例如,如果在mydf
中交换第2行和第3行,则mydf$cid失败。
mydf$cid <- as.numeric(factor(apply(mydf,1,function(x) paste0(sort(x), collapse = ""))))