2012-06-21 9 views
5

Vì vậy, tôi có hai vectơ của các điểm dữ liệu và tôi muốn tạo một danh sách của mỗi cặp duy nhất, cùng với tần số của cặp đó. Tôi biết rằng tôi có thể sử dụng bảng để làm điều này với một trong các vectơ, nhưng tôi dường như không thể tìm ra cách để làm nó với cặp.Làm cách nào để tạo danh sách tất cả các cặp dữ liệu duy nhất trong R?

+1

'table' nhận nhiều đối số và bảng chéo. – cardinal

+2

chức năng 'unique' bị quá tải để thực hiện việc này một cách tự động. Nếu bạn nhập một ma trận, nó sẽ trả về các hàng duy nhất của ma trận - điều này sẽ giải quyết vấn đề của bạn. – Macro

+0

là các vectơ có độ dài bằng nhau không? – JackeJR

Trả lời

8

nó chỉ là ...

dat <- data.frame(x = sample(letters[1:3], size = 100, replace = TRUE), 
    y = sample(letters[1:3], size = 100, replace = TRUE)) 

unique(dat) 
table(dat) 

hoặc, nói vectơ của bạn chỉ là x và y và bạn chỉ muốn bàn ...

table(x,y) 
+1

ah. "độc nhất". Ai có thể đoán được? – crf

0

Nếu vec1vec2 là các vectơ trong câu hỏi:

points <- mapply(c, vec1, vec2, SIMPLIFY=FALSE) 
uniq.points <- unique(points) 
freqs <- sapply(uniq.points, FUN=function(point) length(which(points %in% list(point)))) 
cbind(do.call(rbind, uniq.points), freqs) # matrix of points and freqs 
2
# A sample dataset: 
dat <- data.frame(x = sample(letters, size = 1000, replace = TRUE), 
        y = sample(letters, size = 1000, replace = TRUE) 
) 

# Aggregating using just base R: 
as.data.frame(table(dat$x, dat$y)) 

# With plyr 
library(plyr) 
count(dat, vars = c(x, y)) 
count(dat) # Or, less generalizably