Behalten Sie die erste Zeile mit mehreren Spalten in einer R-Datentabelle bei
Ich möchte die erste Zeile nur aus einer data.table abrufen, die nach mehreren Spalten gruppiert ist.
Dies ist mit einer einzelnen Spalte einfach, z.
(dt <- data.table(x = c(1, 1, 1, 2),
y = c(1, 1, 2, 2),
z = c(1, 2, 1, 2)))
# x y z
# |1: 1 1 1
# |2: 1 1 2
# |3: 1 2 1
# |4: 2 2 2
dt[!duplicated(x)] # Remove rows 2-3
# x y z
# |1: 1 1 1
# |2: 2 2 2
Keiner dieser Ansätze funktioniert jedoch, wenn versucht wird, basierend auf zwei Spalten zu entfernen. in diesem Fall wird nur Zeile 2 entfernt:
dt[!duplicated(x, y)] # Keeps only original data set
# x y z
# |1: 1 1 1
# |2: 1 1 2
# |3: 1 2 1
# |4: 2 2 2
dt[!duplicated(list(x, y))] # Same as above
dt[!duplicated(c("x", "y"))] # Same as above
dt[!duplicated(list("x", "y"))] # Same as above
dt[!duplicated(c(x, y))] # Only removes duplicates from first column
# x y z
# |1: 1 1 1
# |2: 2 2 2
Davon abgesehen funktioniert das nur in bestimmten Fällen:
dt[!duplicated(paste0(x, y))]
# x y z
# |1: 1 1 1
# |2: 1 2 1
# |3: 2 2 2