Quindi ho due vettori di punti dati, e vorrei fare una lista di ogni coppia unica, insieme alla frequenza di quella coppia. So che posso usare la tabella per farlo con uno dei vettori, ma non riesco a capire come farlo farlo con le coppie.Come posso creare un elenco di tutte le coppie uniche di punti dati in R?
5
A
risposta
8
è solo ...
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, dicono i vettori sono solo x e y e solo tu voglio il tavolo ...
table(x,y)
+1
ah. "unico". Chi avrebbe mai immaginato? – crf
0
Se vec1
e vec2
sono i vettori in questione:
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
'table' prende più argomenti e cross-tabules. – cardinal
la funzione 'unique' è sovraccaricata per farlo automaticamente. Se inserisci una matrice, restituirà le righe univoche della matrice: questo dovrebbe risolvere il tuo problema. – Macro
sono i vettori di uguale lunghezza? – JackeJR