У меня есть большой фрейм данных в R, в котором пользователям было поручено описывать объекты в сцене. Мне нужно было 3 уникальных пользователя на сцену, однако некоторые сцены описывались более 3 раз. Я пытаюсь сохранить первых трех уникальных пользователей и удалить остальных.
Игрушечные данные (в реальном наборе данных гораздо больше строк и столбцов)
user <- c("A", "A", "A", "B", "B", "C", "C", "D", "E", "E", "F", "F", "F")
scene <- c("library", "library", "library", "park", "park", "library", "library", "park", "library", "library", "library", "library", "library")
object <- c("book", "book", "lamp", "dog", "cat", "book", "lamp", "dog", "desk", "desk", "book", "lamp", "lamp")
index <- c(1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2)
dat <- data.frame(user, scene, object, index)
user scene object index
A library book 1
A library book 2
A library lamp 1
B park dog 1
B park cat 1
C library book 1
C library lamp 1
D park dog 1
E library desk 1
E library desk 2
F library book 1
F library lamp 1
F library lamp 2
... ... ... ...
Например, здесь A
, B
и C
были первыми пользователями, описавшими сцену library
. Так что теперь описание F
не нужно. Моя основная проблема заключается в том, что, хотя я могу получить общее количество уникальных пользователей, я не знаю, как пометить их как 1
, 2
, 3
, и т. Д. c, чтобы отбросить значения, превышающие 3. .
Желаемый результат
user scene object index count
A library book 1 1
A library book 2 1
A library lamp 1 1
B park dog 1 1
B park cat 1 1
C library book 1 2
C library lamp 1 2
D park dog 1 2
E library desk 1 3
E library desk 2 3
Это было полезно, но сгруппировано только по одному столбцу, поэтому я не смог применить его здесь: R - Группировать по переменной, а затем присвоить уникальный ID