2014-11-04 23 views
0

我有一個對稱矩陣/數據幀,看起來像應用功能,以一個因子依賴性子矩陣

structure(list(HQ673618_1 = c(NA, 90.8, 89.8, 89.6, 89.8, 88.9, 
87.8, 88.2, 88.3), HQ674317_1 = c(90.8, NA, 98.6, 97.7, 98.4, 
97.4, 94.9, 96.2, 95.1), EU686630_1 = c(89.8, 98.6, NA, 98.4, 
98.9, 97.7, 95.4, 96.4, 95.8), EU686593_2 = c(89.6, 97.7, 98.4, 
NA, 98.1, 96.8, 94.4, 95.6, 94.8), JN166322_2 = c(89.8, 98.4, 
98.9, 98.1, NA, 97.5, 95.3, 96.5, 95.9), EU491340_2 = c(88.9, 
97.4, 97.7, 96.8, 97.5, NA, 96.5, 97.7, 96), AB694259_3 = c(87.8, 
94.9, 95.4, 94.4, 95.3, 96.5, NA, 98.3, 95.9), AB694258_3 = c(88.2, 
96.2, 96.4, 95.6, 96.5, 97.7, 98.3, NA, 95.8), AB694462_3 = c(88.3, 
95.1, 95.8, 94.8, 95.9, 96, 95.9, 95.8, NA)), .Names = c("HQ673618_1", 
"HQ674317_1", "EU686630_1", "EU686593_2", "JN166322_2", "EU491340_2", 
"AB694259_3", "AB694258_3", "AB694462_3"), class = "data.frame", row.names = c("HQ673618_1", 
"HQ674317_1", "EU686630_1", "EU686593_2", "JN166322_2", "EU491340_2", 
"AB694259_3", "AB694258_3", "AB694462_3")) 

這些值表示樣品的相似性。 在第一步驟中,我想知道由「_n」中指定的每個處理的平均值:

enter image description here

的困難是在讓ř知道類別因子的行中的給定/ columname。另外,我的數據集比例子要大得多,每次處理的樣本量都不一樣。

感謝您的支持。

+2

你在我不清楚 – 2014-11-04 13:16:37

+0

colmeans問題將適用手段的整列,是否正確?這將包括列的所有處理。但是我想先創建一個(內部)子矩陣(對於所有的_1s和_1s,對於所有的_2s和_2s等等)。問題是「所有樣品與治療的平均身份是什麼」_n「?」與n = 1,2,3,4 – nouse 2014-11-04 13:20:47

+0

是的,它給了我一個兩兩比較,或? – nouse 2014-11-04 13:27:47

回答

2

這裏是一個可能的解決方案(假設稱爲df您的數據集)

indx <- gsub(".*_", "", names(df)) 
vapply(unique(indx), function(x) { 
          temp <- which(indx %in% x) 
          mean(unlist(df[temp, temp]), na.rm = TRUE) 
          }, 
     FUN.VALUE = double(1)) 
#  1  2  3 
# 93.06667 97.46667 96.66667