Если new_data_frame_PEP
является фрейм данных, и вы хотите, чтобы получить строки, которые имеют дубликаты в sequence
, вы можете вместо использование:
res <- new_data_frame_PEP[duplicated(new_data_frame_PEP$sequence) |
duplicated(new_data_frame_PEP$sequence, fromLast=TRUE),]
Здесь мы называем duplicated
дважды: первый с самого начала из sequence
до конца, а затем от конца до начала, используя fromLast
. duplicated
возвращает логический элемент, который равен (то есть |
), чтобы получить все индексы строк, которые имеют дубликаты. Затем мы подмножаем строки new_data_frame_PEP
относительно них.
Чтобы сделать то же самое с более чем одной колонки, так что мы находим все строки, которые дублированные значения в обоих sequence
и modification
столбцов, мы должны выбрать те столбцы, чтобы перейти к duplicated
. Это может быть сделано с помощью subset
:
seq.mod <- subset(new_data_frame_PEP, select=c("sequence","modification"))
data_duplicate <- new_data_frame_PEP[duplicated(seq.mod) | duplicated(seq.mod, fromLast=TRUE),]
Для иллюстрации мы создаем набор данных, который является тем, что вы вывесили за исключением мы включаем только ID
, sequence
, modification
и n_project
колонны. Кроме того, мы дублируем первую строку, так что мы на самом деле есть дубликаты в обоих sequence
и modification
:
new_data_frame_PEP <- structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L), .Label = "DAT ", class = "factor"), sequence = structure(c(4L,
4L, 4L, 1L, 5L, 8L, 7L, 2L, 3L, 6L), .Label = c(" actgat ",
" atagattg ", " atatagag ", " atggggg ", " atgtagtt ", " gggatgac ",
" tatatccc ", " ttttaaat "), class = "factor"), modification = structure(c(4L,
4L, 1L, 4L, 4L, 2L, 4L, 3L, 4L, 4L), .Label = c(" 7.UN ", " 8.UN ",
" 9.AT ", " NULL "), class = "factor"), n_project = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = " project ", class = "factor")), .Names = c("ID",
"sequence", "modification", "n_project"), class = "data.frame", row.names = c(NA,
-10L))
## ID sequence modification n_project
##1 DAT atggggg NULL project
##2 DAT atggggg NULL project
##3 DAT atggggg 7.UN project
##4 DAT actgat NULL project
##5 DAT atgtagtt NULL project
##6 DAT ttttaaat 8.UN project
##7 DAT tatatccc NULL project
##8 DAT atagattg 9.AT project
##9 DAT atatagag NULL project
##10 DAT gggatgac NULL project
Использование только sequence
, получим:
seq.only <- subset(new_data_frame_PEP, select=c("sequence"))
data_duplicate <- new_data_frame_PEP[duplicated(seq.only) | duplicated(seq.only, fromLast=TRUE),]
## ID sequence modification n_project
##1 DAT atggggg NULL project
##2 DAT atggggg NULL project
##3 DAT atggggg 7.UN project
Используя оба sequence
и modification
:
seq.mod <- subset(new_data_frame_PEP, select=c("sequence","modification"))
data_duplicate <- new_data_frame_PEP[duplicated(seq.mod) | duplicated(seq.mod, fromLast=TRUE),]
## ID sequence modification n_project
##1 DAT atggggg NULL project
##2 DAT atggggg NULL project
Да !, Это работает !!!. Благодарю youuu – Enrique