Используя ave
, вы можете создать порядковый номер для каждого повтора:
ave(v, v, FUN = seq_along)
#[1] 1 2 3 1 2 1
Разделите это на 10, чтобы получить
ave(v, v, FUN = seq_along)/10
#[1] 0.1 0.2 0.3 0.1 0.2 0.1
Теперь добавьте к нему v
v1 <- v + ave(v, v, FUN = seq_along)/10
v1
#[1] 1.1 1.2 1.3 2.1 2.2 3.1
Теперь, поскольку вы не хотите изменять первое значение каждой группы, вы можете сделать:
v1[!duplicated(v)] <- unique(v)
v1
#[1] 1.0 1.2 1.3 2.0 2.2 3.0