R编程快捷键:组合键

R编程快捷键:组合键,r,unique,R,Unique,有谁能告诉我如何查询数据帧并获得唯一变量的所有可能组合: ############### Data1 - 2 columns - one PK data1 <- data.frame(rep_len(1, length.out = 10)) data1$PK <- rep_len(1:10, length.out = 10) names(data1) <- c('DupData', 'PK') rownames(data1) <- NULL rapply(data1,

有谁能告诉我如何查询数据帧并获得唯一变量的所有可能组合:

############### Data1 - 2 columns - one PK
data1 <- data.frame(rep_len(1, length.out = 10))
data1$PK <- rep_len(1:10, length.out = 10)

names(data1) <- c('DupData', 'PK')
rownames(data1) <- NULL

rapply(data1,function(x)length(unique(x)), how = 'unlist')

length(unique(data1$PK))

############### Data2 - 3 columns - Two column composite PK
data2 <- data1
data2$PK <- rep_len(1:2, length.out = 10)
data2$PK2 <- rep_len(2:6, length.out = 10)
rapply(data2,function(x)length(unique(x)), how = 'unlist')

length(unique(data2$DupData))
length(unique(data2$PK))
length(unique(data2$PK2))
nrow(unique(data2[,c(1,2)], nmax = 3))
nrow(unique(data2[,c(1,3)], nmax = 3))
nrow(unique(data2[,c(2,3)], nmax = 3))

############### Data3 - 4 columns - Three column composite PK
data3 <- data1
data3$PK <- c(0,0,0,0,0,0,0,0,1,1)
data3$PK2 <- c(0,0,1,1,1,2,2,2,0,0)
data3$PK3 <- c(1,2,0,1,2,0,1,2,0,1)
rapply(data3,function(x)length(unique(x)), how = 'unlist')

length(unique(data3$DupData))
length(unique(data3$PK))
length(unique(data3$PK2))
length(unique(data3$PK3))
nrow(unique(data3[,c(1,2)], nmax = 4))
nrow(unique(data3[,c(1,3)], nmax = 4))
nrow(unique(data3[,c(1,4)], nmax = 4))
nrow(unique(data3[,c(1:4)], nmax = 4))
nrow(unique(data3[,c(2,3)], nmax = 4))
nrow(unique(data3[,c(2,4)], nmax = 4))
nrow(unique(data3[,c(3,4)], nmax = 4))
nrow(unique(data3[,c(2:4)], max = 4))
数据1-2列-一个主键

数据1参见
?表
(+15个字符可接受)您是否在寻找排列/组合?也许
combn
是一个开始,甚至
expand.grid
。否则,请提供您想要的实际输出(说“每个组合”和“10就是我想要的”对我来说没有足够的意义)。我不知道这个问题要清楚多少。在数据库术语中,我正在寻找一种分析数据并定义主键候选列的方法。复合PK意味着您有两个或多个列创建行的唯一实例,或者用R术语表示观察。我以前问过这个问题,他们要求提供数据,所以我提供了数据。如果运行上面的可复制代码,当唯一元素的数量=该数据帧中的行数时,您将看到一个键是唯一的,或者组合是唯一的。如果不循环列,可能无法执行我的要求。请参阅
?表
(+15个字符可接受)你在找排列/组合吗?也许
combn
是一个开始,甚至
expand.grid
。否则,请提供您想要的实际输出(说“每个组合”和“10就是我想要的”对我来说没有足够的意义)。我不知道这个问题要清楚多少。在数据库术语中,我正在寻找一种分析数据并定义主键候选列的方法。复合PK意味着您有两个或多个列创建行的唯一实例,或者用R术语表示观察。我以前问过这个问题,他们要求提供数据,所以我提供了数据。如果您运行上面的可复制代码,您将看到当唯一元素的数量=该数据帧中的行数时,键是唯一的,或者组合是唯一的。如果不遍历列,可能无法执行我的要求。