【发布时间】:2016-01-17 00:24:33
【问题描述】:
我想根据另一个对象的列的标准使用另一个 df 的百分比来计算 data.frame 列的百分比值。以下是一些示例数据:
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 和order 的原始结构。所以我正在寻找一个简短的命令。我真的很感激你的想法。谢谢
【问题讨论】: