1
我想根據另一個對象列的標準使用另一個df的百分比來計算data.frame
列的百分比值。下面是一些示例數據: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中的不同對象執行此操作? 「聚合」/「子集」或類似的東西?
編輯:到目前爲止我嘗試這樣做,我認爲這可能是一個辦法:
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和順序。所以我正在尋找一個簡短的命令。我非常感謝你的想法。謝謝
這隻會爲每個產品提供一個平均值,而不是原始df(請參閱我的預期結果,df有4個對象,並且只生成df中的三個級別) –