s_t ответ прост и эффективен, но если вы ищете решение для базовой R и функцию:
example <- data.frame(Product = c("A", "B", "C", "D"), Sales = c(100, 40, 10, 15))
min.products <- function(Product, Sales, percent){
df <- data.frame(Product, Sales)
minimum <- percent*sum(df$Sales)
df <- df[order(-df$Sales), ]
lowest.score <- df$Sales[cumsum(df$Sales)>minimum][1]
answer <- df$Product[df$Sales>=lowest.score]
return(answer)
}
min.products(example$Product, example$Sales, 0.8)