2015-12-03 48 views
-2

下面是一個樣本數據的數據集:遍歷一個數據幀,並和所有列,如果值出現在某列

y<-c("A1","B1", "C2", "A1", "B1","C1", "A1","B2", "C3", "A1", "B1", "C4", "A1", "B1","C4", "A1","B2", "C4", "A1","B1", "C4", "A1", "B1", "C4") 
    test<- data.frame(matrix(y, nrow = 3, ncol = 8)) 
    colnames(test) <- c("Learn_1", "Car_1", "Car_2", "Fan_1", "Fan_2", "Fan_3","Kart_1", "God_1") 
    test 

有沒有使用過的每一列的應用功能,以循環的方式,但最後總結一個數值出現的次數,只有在數據幀的最後一列出現(因此使用我的最後一列作爲索引來搜索)?我知道我可以使用for循環來做到這一點,但是有點長,也許使用apply函數可以做到這一點?

+3

那麼這個樣本輸入的期望輸出究竟是什麼? (儘可能具體) – MrFlick

+0

我所需的輸出是最後一列中出現在整個數據框其他列中的值的總和列表或表格。我的最終目標是將這個總和繪製在一個矩形中。矩形是最後一列中基因的總數,並分解爲百分比陰影(不同顏色)。百分比陰影是顯示1倍,2倍,3倍等的值的比例... – Chad

回答

1

如果您正在尋找對應於最後列的值的值被發現的次數,每行,那麼這個工程:

apply(test,1,FUN= function(x) length(which(x[-8]==x[8])))

你可以很容易地適應任何數量的的列,甚至將其添加爲新列。

編輯:

如果它是整個數據集,那麼你可以使用:

test<-as.matrix(test); 
table(test[,-8])[match(test[,8],names(table(test[,-8])))] 

自己的代碼之後。

+0

Ouostiti有沒有辦法做到這一點,但數據混在一起,可能對應不同的行然後我正在檢查? – Chad

+0

我編輯了我的答案。 Ouistiti! – Ouistiti

+0

完美! – Chad

相關問題