Ich habe einen Datensatz mit Vogelbeobachtungsaufzeichnungen, ungefähr 300.000 Zeilen, mit 7 Spalten. Ich möchte eine neue Spalte erstellen, die auf den eindeutigen Kombinationen von 3 anderen Spalten basiert, die alle Faktorvariablen sind - "gridref", das 1 km große Gitterquadrat, in dem sich der Datensatz befindet. "Beobachter", die Person, die die Beobachtung gemacht hat, und "Datum", Datum der Beobachtung. Ich möchte eine neue Spalte "visit_ID" für jeden eindeutigen "Besuch" eines 1 km langen Rasterquadrats erstellen, dh für jede eindeutige Kombination aus Rasterref, Beobachter und Datum.
Ich habe versucht, den folgenden Code zu verwenden:
birds_raw$vid <- as.integer(interaction(birds_raw$gridref, birds_raw$observer, birds_raw$date))
Dies gibt die folgende Fehlermeldung zurück:
Error: cannot allocate vector of size 636.1 Gb
In addition: Warning message:
In ans * length(l) : NAs produced by integer overflow
Ich bin sicher, es muss einen einfachen Weg geben, dies zu erreichen. Kann mir bitte jemand helfen?
Sie können dies effizient tun mit data.table
:
library(data.table)
birds_raw <-
data.table(
other_var = factor(c("other 1", "other 2", "other 3", "other 4")),
gridref = factor(c("grid 1", "grid 2", "grid 1", "grid 1")),
observer = factor(c("person 1", "person 2", "person 2", "person 1")),
date = factor(c("date 1", "date 2", "date 1", "date 1"))
)
birds_raw[, visit_id := .GRP, by = c("gridref", "observer", "date")][]
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen