Удаление повторяющихся данных obs, если n Obs <x в R - PullRequest
2 голосов
/ 07 ноября 2011

У меня есть набор данных повторных измерений. Мне нужно удалить всех Участников, у которых количество наблюдений для этого человека меньше 3. Каков наилучший способ сделать это?

x <- c(9, 9, 9, 11, 11, 23, 23, 23, 23, 45, 45, 45, 56, 56)

Здесь 11 и 56 должны быть удалены из данных. До сих пор я создал фрейм данных со всеми объектами, которые я хочу сохранить, но не уверен, как манипулировать моим набором данных, используя новый фрейм данных

x <- as.data.frame(table(x))
x1 <- x[x$Freq > 2,]

Ответы [ 2 ]

4 голосов
/ 07 ноября 2011
x[x %in% names(table(x)[table(x) >=3])]
4 голосов
/ 07 ноября 2011

Еще одна функция ave():

x[ave(x,x,FUN=length) > 2]

В ответ на ваш комментарий вы должны выполнить это так:

raw.data1 <- raw.data[ave(raw.data$REGISTRA,raw.data$REGISTRA,FUN=length) > 2]

Также прочитайте справочную страницу ave, которая поможет вам понять, что именно делает код.

...