2016-03-02 71 views
-4

我需要一些R代碼的幫助。需要幫助編寫一個循環在R

我有一個數據幀,讓我們說,它看起來是這樣的:


___ | C1 C2 ... ... ... C3 C4 C5 ...

r1_ | 1 ...... 2 ...... 3 ..... 4 ..... 5

r2_ | 1 ...... 3 ...... 5 ..... 4 ..... 5

r3_ | 4 ...... 2 ...... 1 ..... 1 ..... 2

r4_ | 1 ...... 2 ...... 3 ..... 4 ..... 5

r5_ | 3 ...... 3 ...... 4 ..... 2 ..... 1


我需要做'相似性檢查'。它是如何完成的,我需要運行一個循環遍歷每一行的每一個元素,並將它與其他每一行的其他對應元素進行比較。因此,這意味着,我想使循環來檢查這樣每個響應,並給我一個布爾值T(真)或F(假):

[R1,C1] == [R1,C1]

[R1,C1] == [R2,C1]

[R1,C1] == [R3,C1]

[R1,C1] == [R4,C1]

[r1,c1] == [r5,c1]

此時循環完成檢查[r1,c1] agai不包括C1的所有元素(包括它自己,這是不必要的)。比較[r1,c1]之後,我希望循環轉到[r1,c2]並將其與c2的所有元素進行比較。像這樣,我希望將r1的所有元素與所有對應的行元素進行比較。 控制檯放出來是這樣的:

牛逼.....牛逼.....牛逼.....牛逼.....牛逼

牛逼.....˚F ..... F ..... T ..... T

F ..... T ..... F ..... F ..... F

T ..... T ..... T ..... T ..... T

F ..... F ..... F ..... F。 .... F

現在這只是[r1,]與[r1,],[r2,],[ r3,],[r4,]和[r5,]。比較[r1,]之後的循環應該轉到[r2,],並以與[r3,],[r4,]和[r5,]相同的方式進行比較,然後將[r4,]和[r5 , ] 等等等等。

最後,我會得到一個Trues和Falses的矩陣,它將顯示每個調查與其他調查的相似性。然後,我會考慮(每一行'T'的數量除以列數)* 100。這將告訴我與另一個調查的相似程度。

TIA :)

此外, 有沒有插入表格來解釋這個問題沒有更好更簡單的方法?這是我的第一個問題,希望我不會浪費時間打字。「

+0

在列應用功能有更好的在問題共享數據。請參閱[如何創建可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – MrFlick

回答

0

的使用該列的第一個元素進行比較,以列的其餘部分被它做一個函數...

df <- read.csv(textConnection(gsub("\\.+", ",", 
    "1...... 2...... 3..... 4..... 5 
    1...... 3...... 5..... 4..... 5 
    4...... 2...... 1..... 1..... 2 
    1...... 2...... 3..... 4..... 5 
    3...... 3...... 4..... 2..... 1")), header=FALSE) 

apply(df, 2, function(x)x[1]==x) 
     V1 V2 V3 V4 V5 
[1,] TRUE TRUE TRUE TRUE TRUE 
[2,] TRUE FALSE FALSE TRUE TRUE 
[3,] FALSE TRUE FALSE FALSE FALSE 
[4,] TRUE TRUE TRUE TRUE TRUE 
[5,] FALSE FALSE FALSE FALSE FALSE