2012-09-18 154 views
0

我有10列的數據幀:排除在不同的列具有相同的值的行

A B C 1 1 1 1 1 1 1 
B M J 2 1 2 2 2 2 2 
J K Z 3 3 3 3 3 3 3.1 
V N I 4 4 4 4 4 4 4 

我要排除那些具有4至10個列中的相同值的行。我找到了比較不同行的解決方案,但我在這裏討論的是一行內的內容。所以輸出

B M J 2 1 2 2 2 2 2 
J K Z 3 3 3 3 3 3 3.1 

,因爲第一次和最後一行在列相同的值4至10.我可以通過各1個值1的比較做,但我的數據幀是非常大的(〜100,000行)。

回答

5

什麼是這樣的:

##Work out the rows to keep 
##dd is your data frame 
rows = apply(dd[, 4:10], 1, function(i) length(unique(i)) > 1) 

然後子集作爲正常

dd[rows,] 

〜100K行不算多。

+0

完美。謝謝。 – Rajiv

+0

如果速度是一個問題,函數(i)any(i [-1]!= i [1])將比使用「unique」更快。 – flodel

相關問題