Мы группируем по 'name' и mutate
в 'id', чтобы получить first
элемент 'id'
library(dplyr)
df1 %>%
group_by(name) %>%
mutate(id = first(id))
Или data.table
library(data.table)
setDT(df1)[, id := first(id), by = name]
Или в base R
df1$id <- with(df1, ave(id, name, FUN = function(x) x[1]))
data
df1 <- structure(list(id = 1:5, name = c("M1", "M1", "M1", "M2", "M2"
)), class = "data.frame", row.names = c(NA, -5L))