我知道如何找到具有相同参数的项目,但是当有很多参数并且我想找到至少有一个相同参数的项目时,我不知道是否有任何我可以使用的功能。 例如,我有一个表,每个项目有2个参数:
Mydata<-data.frame(item=1:4,P1=c(7,12,11,8),P2=c(12,3,11,7))
Mydata
# item P1 P2
# 1 1 7 12
# 2 2 12 3
# 3 3 11 11
# 4 4 8 7
在示例中,item1和item2都有参数12,因此它们是相似的。我期望得到一个表格,显示该项目及其类似项目可能是这样的:
# item x1 x2
# 1 2 4
# 2 1 NA
# 3 NA NA
# 4 1 NA
有没有可以做到这一点的功能?
答案 0 :(得分:2)
您可以使用R
sapply
Mydata <- data.frame(item=1:4,P1=c(7,12,11,8),P2=c(12,3,11,12))
# item P1 P2
#1 1 7 12
#2 2 12 3
#3 3 11 11
#4 4 8 12
m = Mydata[-1]
res = sapply(1:nrow(m), function(i){
mat = matrix(is.element(unlist(m), m[i,]), ncol=ncol(m))
x = Filter(function(x) x!=i, which(!!rowSums(mat)))
if(length(x)==0)
return(rep(NA,ncol(m)))
c(Mydata[,1][x], rep(NA, ncol(m)-length(x)))
})
cbind(Mydata[1], t(res))
# item 1 2
#1 1 2 4
#2 2 1 4
#3 3 NA NA
#4 4 1 2