2012-06-21 21 views
5

Así que tengo dos vectores de puntos de datos, y me gustaría hacer una lista de cada par único, junto con la frecuencia de ese par. Sé que puedo usar la tabla para hacer esto con uno de los vectores, pero parece que no puedo encontrar la manera de hacerlo con los pares.¿Cómo puedo hacer una lista de todos los pares únicos de puntos de datos en R?

+1

'tabla' toma múltiples argumentos y tablas cruzadas. – cardinal

+2

la función 'unique' está sobrecargada para hacer esto automáticamente. Si ingresa una matriz, devolverá las filas únicas de la matriz; esto debería resolver su problema. – Macro

+0

son los vectores de igual longitud? – JackeJR

Respuesta

8

es que ...

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) 

o, por ejemplo sus vectores son sólo x e y y sólo quiere la tabla ...

table(x,y) 
+1

ah. "único". ¿Quién lo hubiera adivinado? – crf

0

Si vec1 y vec2 son los vectores en cuestión:

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 
Cuestiones relacionadas