2013-05-27 16 views
1

我想要做的是檢查x和y值的有序對的數據框(在這個特定的集合中只有4個可能的值)並且計數每個特定值發生多少次。計算R中配對事件的數目?

例如,我的數據幀具有列1和2,如下所示:

data <- data.frame(col1=c(-.25, 0, -.25, -.77, 0, 0, 0, -2.5), 
        col2=c(0.9, 0, 0.9, 2.9, 0, 0, 0, 0.9)) 

我想計數每個可能對產生的時間。我發現的最接近的東西是table(),它返回16個可能的值,這不是我所需要的。 I.E,我嘗試

test=as.data.frame(table(data[,1:2])) 

它將兩列填入表中作爲測試。我得到的是一個列舉9種'可能'組合的矩陣 - 我想它只是簡單地交叉引用每個列值並計算出現的次數。

編輯:我意識到表中第三列的非零條目是我想要的,但我最終需要這個來執行24個總集合,所以它應該儘可能自動化。

+0

你能不能給一個小重複的例子,什麼預期的結果將是什麼樣子?如果可能的話使用代碼摺疊 –

+0

我不知道'表(數據)'如何不這樣做。它*提供了兩列中每個可能配對的計數。你只需要刪除零值? –

+0

是的,我基本上只需要刪除零值。我只是玩得更遠,注意到了。 – yawgeh

回答

3

鑑於套數很多(24),table可能會創建太多的組合。您可以使用此替代方法:

data$count <- 1 
aggregate(count ~ ., data, FUN = sum) 
# col1 col2 count 
# 1 0.00 0.0  4 
# 2 -2.50 0.9  1 
# 3 -0.25 0.9  2 
# 4 -0.77 2.9  1 
+0

這正是我所需要的,謝謝! – yawgeh

0

子集test刪除零個值:

test=as.data.frame(table(data[,1:2])) 
test <- test[which(!test$Freq==0),] 

## col1 col2 Freq 
##4  0 0 4 
##5 -2.5 0.9 1 
##7 -0.25 0.9 2 
##10 -0.77 2.9 1