0
我有一個數據框,我希望在每個列的值之間進行配對比較。最終,我的目標是獲得比較的交叉製表,其中每個值代表比較列中樣本之間的相似性百分比。對於複製和我迄今嘗試:來自列比較的交叉表
a <- c(1:30)
b <- c(30:1)
c <- c(1:10,30:11)
data <- as.data.frame(matrix(c(a,b,c), ncol = 3, nrow = 30))
fr<-apply(combn(1:length(data), 2), 2, function(x) {
result <- as.data.frame(table(
factor(sign(data[,x[1]] - data[,x[2]]), levels=c(0), labels=c("Fr"))
))
colnames(result)[1] <- paste(x, collapse="|")
return(result)
})
fr # returns a list of each comparison, with its respective similarity count
a<-sapply(fr, unlist) # My attempt to get a dataframe/matrix of the results
t(a)
t(a); sapply(fr, unlist); do.call(cbind, fr) # I get different arrangements, but none in the form:
1|2 0
1|3 10
2|3 0
有一次,我在該格式得到數據幀,它會變得更加直截了當地得到一個交叉表,
V.1 V.2 V.3
V.1 -
V.2 0 -
V.3 10 0 -
這是我最終會尋找,儘管交叉表中的值將是#/nrow
以獲得相應的百分比值。我不知道如果我要對這個錯誤的方式,但任何輸入,將不勝感激
'combn'有一個'FUN'參數,所以你也可以做' (combn(seq_along(data),2,FUN = function(x)table(factor(sign(data [,x [1]] - data [,x [2]]),levels = 0,labels = paste( x [1],x [2],sep =「|」))),simplify = FALSE))'到達「f1」。 – A5C1D2H2I1M1N2O1R2T1 2014-09-13 18:46:37
@Ananda Mahto感謝您的評論 – akrun 2014-09-14 03:53:17