2017-06-22 59 views
1

对于一列,我已经得到了以下工作,但需要将其应用于所有列。每列A01A02等需要使用crossprod()CAG列相乘,然后每个人都应该按该列的总和数据帧的第一列与其他列之间的Crossprod

#My data frame 
data <- data.frame(CAG = c(13, 14, 15), A01 = c(6485,35,132), A02 = c(0,42,56)) 

#Sum each column independently 
sumcolumn <- colSums(data[ , 2:ncol(height)], na.rm=TRUE) 

# Work with column A01 
result <- crossprod(data$`A01`, data$CAG)/sumcolumn 

回答

2
mat <- data.matrix(data) 
c(crossprod(mat[, -1], mat[, 1]))/colSums(mat[, -1]) 

我不认为na.rm被划分为colSums问题。因为如果列中有任何NA,那么交叉产品首先是NA

+0

非常感谢,完美的作品。比我想象的要简单得多。我正在尝试使用for循环 – Mike

相关问题