Точно, не ясно об условиях, но вы можете попробовать
library(dplyr)
df %>%
group_by(S.No) %>%
mutate_at(2:3, ~replace(., row_number() != n(),''))
#OR
#mutate_at(vars(Rate,Proportion), ~replace(., row_number() != n(),''))
# S.No Rate Proportion Control
# <chr> <chr> <chr> <chr>
#1 C11 "" "" A
#2 C11 "" "" B
#3 C11 50 0.9 A
#4 C21 "" "" B
#5 C21 "" "" A
#6 C21 40 0.8 A
Это заменит пустые значения для каждой записи в столбцах Rate
и Proportion
, за исключением последней строки в каждой группе (S.No
).
данные
df <- structure(list(S.No = c("C11", "C11", "C11", "C21", "C21", "C21"
), Rate = c(50L, 50L, 50L, 40L, 40L, 40L), Proportion = c(0.9,
0.9, 0.9, 0.8, 0.8, 0.8), Control = c("A", "B", "A", "B", "A",
"A")), class = "data.frame", row.names = c(NA, -6L))