Я хочу разбить dataframe так, чтобы элементы, уникальные в определенном столбце, были отделены от неповторимых элементов. Таким образом, ниже dataframe будут разделены на два dataframes как такИзвлечение только уникальных строк из фрейма данных в R
id v1 v2
1 1 2 3
2 1 1 1
3 2 1 1
4 3 1 2
5 4 5 6
6 4 3 1
в
id v1 v2
1 2 1 1
2 3 1 2
и
id v1 v2
1 1 2 3
2 1 1 1
3 4 5 6
4 4 3 1
, где они расщепляются на уникальность id
колонны. duplicated
не работает в этой ситуации, потому что строки 1 и 5 в верхнем фрейме данных не считаются дублирующими, то есть первое вхождение возвращает FALSE
в duplicated
.
EDIT
Я пошел с
dups <- df[duplicated(df1$id) | duplicated(df$id, fromLast=TRUE), ]
uniq <- df[!duplicated(df1$id) & !duplicated(df$id, fromLast=TRUE), ]
, который бежал очень быстро с моей 250000 строк dataframe.
Это _is_ дубликата вопрос. Используйте 'duplicated() & duplicated (, fromLast = TRUE)'. Или просто посмотрите на 'методы (уникальные)' и увидите, что существует 'unique.dataframe', или вы можете работать над самим вектором для построения логического индекса с' df $ id% in% unique (df $ id) ' –
'dat [with (dat, ave (id, id, FUN = length)) == 1,]; dat [с (dat, ave (id, id, FUN = length))> 2,] ' – rawr