Mam więc dwa wektory punktów danych i chciałbym utworzyć listę każdej unikalnej pary wraz z częstotliwością pary. Wiem, że mogę użyć tabeli do zrobienia tego z jednym z wektorów, ale nie mogę się domyślić, jak zrobić to z parami.Jak mogę utworzyć listę wszystkich unikalnych par punktów danych w R?
5
A
Odpowiedz
8
to tylko ...
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)
lub mówią twoi wektory są po prostu x i y i tylko ty chcesz mieć stół ...
table(x,y)
+1
ah. "wyjątkowy". Kto by się domyślił? – crf
0
Jeśli vec1
i vec2
są wektory w pytaniu:
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
'tablica' przyjmuje wiele argumentów i tworzy tabele krzyżowe. – cardinal
Funkcja 'unique' jest przeciążona, aby zrobić to automatycznie. Jeśli wprowadzisz macierz, zwróci ona unikalne wiersze macierzy - to powinno rozwiązać twój problem. – Macro
są wektorami o jednakowej długości? – JackeJR