Может быть, мы сначала получим строки unique
, а затем создадим условие для проверки частоты уникальных элементов по каждому идентификатору и изменим те, у которых больше 1 на «Оба», снова получим строки unique
df2 <- unique(df1)
i1 <- with(df2, ave(Direction, ID, FUN = function(x) length(unique(x))) == 2)
df2$Direction[i1] <- 'Both'
out <- unique(df2)
данные
df1 <- structure(list(ID = c(30761L, 30762L, 30763L, 30764L, 30765L,
30765L, 30766L, 30766L, 30767L, 30767L, 30768L, 30768L, 30769L,
30769L, 30770L, 30771L, 30772L, 30772L, 30773L, 30773L, 30774L
), Direction = c("River", "Marine", "Marine", "Marine", "River",
"River", "Marine", "River", "River", "River", "River", "River",
"River", "River", "River", "River", "River", "River", "River",
"River", "River")), class = "data.frame", row.names = c("100",
"101", "102", "103", "104", "105", "106", "107", "108", "109",
"110", "111", "112", "113", "114", "115", "116", "117", "118",
"119", "120"))