比较R中的数据集
我收集了一组CSV文件格式的事务:比较R中的数据集,r,dataset,associations,compare,substitution,R,Dataset,Associations,Compare,Substitution,我收集了一组CSV文件格式的事务: {Pierre, lait, oeuf, beurre, pain} {Paul, mange du pain,jambon, lait} {Jacques, oeuf, va chez la crémière, pain, voiture} 我计划做一个简单的关联规则分析,但首先我想从每个事务中排除不属于ReferenceSet={lait,oeuf,beurre,pain}的项 因此,在我的示例中,生成的数据集是: {Pierre, lait, oeuf
{Pierre, lait, oeuf, beurre, pain}
{Paul, mange du pain,jambon, lait}
{Jacques, oeuf, va chez la crémière, pain, voiture}
我计划做一个简单的关联规则分析,但首先我想从每个事务中排除不属于ReferenceSet={lait,oeuf,beurre,pain}
的项
因此,在我的示例中,生成的数据集是:
{Pierre, lait, oeuf, beurre, pain}
{Paul,lait}
{Jacques, oeuf, pain,}
我相信这很简单,但希望阅读一些建议/答案来帮助我。%中的
%操作符会派上用场
pierre <- c("lait","oeuf","beurre","pain")
paul <- c("mange du pain", "jambon", "lait")
jacques <- c("oeuf","va chez la crémière", "pain", "voiture")
reference <- c("lait", "oeuf", "beurre", "pain")
pierre_fixed <- pierre[pierre %in% reference]
paul_fixed <- paul[paul %in% reference]
jacques_fixed <- jacques[jacques %in% reference]
pierre_fixed
paul_fixed
jacques_fixed
pierre一种方法如下(但是,当我将结构作为矩阵离开时,我将NAs留在了数据已被删除的位置(如果导出回CSV,这些数据可能会被删除);我还确信不需要循环也可以做到这一点-这将使它更快(但是,我的可读性较差),我相信还有一种更有效的方法来实现这一逻辑——我还想看看其他人对此的看法。)
ref另一个答案引用了%
中的%,但在这种情况下,intersect
更为方便(你可能也想看看match
,但我认为它与%
中的%in%
记录在同一个地方,lappy
和intersect
我们可以将答案做成一行:
数据:
非常感谢你们所有人,听起来很有趣的方法,我们将尝试它们。非常感谢Ben,这种方法听起来很好而且简单。现在我将尝试理解如何实现它,以便从csv文件构建输入列表,并将Lappy方法的输出写入一个带有列表的文件中。再次感谢您在我周日深夜的疲劳中,我忘记了*apply
函数-这些函数非常简单,可以减少代码
ref <- c("lait","oeuf","beurre","pain")
input <- read.csv("info.csv",sep=",",header=FALSE,strip.white=TRUE)
> input
V1 V2 V3 V4 V5
1 Pierre lait oeuf beurre pain
2 Paul mange du pain jambon lait
3 Jacques oeuf va chez la crémière pain voiture
input <- as.matrix(input)
output <- matrix(nrow=nrow(input),ncol=ncol(input))
currentRow <- c()
for(i in 1:nrow(input)) {
j <- 2
output[i,1]<-input[i,1]
for(k in 2:length(input[i,])) {
if(toString(input[i,k]) %in% ref){
output[i,j] <- toString(input[i,k])
j<-j+1
}
}
}
> output
[,1] [,2] [,3] [,4] [,5]
[1,] "Pierre" "lait" "oeuf" "beurre" "pain"
[2,] "Paul" "lait" NA NA NA
[3,] "Jacques" "oeuf" "pain" NA NA
> L <- list(pierre=c("lait","oeuf","beurre","pain") ,
+ paul=c("mange du pain", "jambon", "lait"),
+ jacques=c("oeuf","va chez la crémière", "pain", "voiture"))
> reference <- c("lait", "oeuf", "beurre", "pain")
> lapply(L,intersect,reference)
$pierre
[1] "lait" "oeuf" "beurre" "pain"
$paul
[1] "lait"
$jacques
[1] "oeuf" "pain"