Я хочу рассчитать процентные значения для столбца data.frame
на основе критерия столбца другого объекта, используя проценты другого df. Вот несколько примеров данных:R: Как выполнить (пользовательский) расчет на основе критериев столбца и процентных значений другого df?
df <- data.frame(Value = c(50,10,30,40),
object = c("apples","tomatoes", "apples","pears"))
и объект доли с процентами для объектов:
share <- data.frame(object = c("tomatoes","pears", "apples"),
percentage = c(90,75,80))
Мой ожидаемый результат:
Value object
1 40 apples
2 9 tomatoes
3 24 apples
4 30 pears
С только один объект, я использовал этот код, который отлично работает:
df[,1] <- df$Value * share$percentage /100
Но как выполнить это для разных объектов в df/share? «агрегация»/«подмножество» или что-то в этом роде?
EDIT: Я попытался это так далеко, что я думаю, что это может быть так:
df[,1] <- aggregate(df$Value, by=df$object,FUN= function(x) {x$Value * share$percentage /100} )
и
df[,1] <- apply(split(df, df$object) function(x) {x$Value * share$percentage/100})
Однако функция кажется неправильным (я м и не очень знакомы с функциями :). Обратите внимание, что я не хочу сначала объединять df
с share
, так как мне нужна оригинальная структура df и порядка. Поэтому я ищу короткую команду. Я очень ценю ваши идеи. Thanks
Это обеспечивает только среднее значение для каждого продукта, но не для исходного df (см. Мой ожидаемый результат, df имеет 4 объекта и вы производите только три уровня в df) –