【发布时间】:2012-09-10 15:13:35
【问题描述】:
我是 R 的新手,我可能很难问我的问题。请多多包涵。
我有两个数据框。为了解释,我们假装:
df1
列代表收益类型:玉米、燕麦、小麦等。 Rows 代表一年中的月份,一月,二月等。 Elements 表示在该特定月份购买的那种收益类型的每吨价格。
df2
代表国家的列:西班牙、智利、墨西哥等。 此框架的行代表与该国家打交道的额外成本,可能是: 每个国家的包装成本、运输成本、国家进口税、检验费等。
现在我要构建第三个数据框:
df3
它表示所有国家/地区每月谷物组合的总成本(例如 10% 玉米、50% 燕麦……)以及相关的运输、税收等成本 假设有是一个方程(使用来自 df1 和 df2 的数据)计算给定谷物组合每个国家/地区每月的总成本以及每个国家/地区的额外成本。
为简洁起见,让我们假设 3 月份总成本等式的一部分,而西班牙是
cost <- .10 * df1[ “mar”,”oats”] + df2[“tax”,”Spain”] + .....
选择第二个数据帧的元素并对第一个数据帧的列进行算术运算以获得结果对我来说很简单。对于特定国家/地区:
cost <- .10 * df1[ ,”oats”] + df2[“tax”,”Spain”] + .....
这给了我西班牙每个月的费用
问题是:我必须对每个国家重复相同的算术。
另一个版本:
cost <- .10 * df1[ ,”oats”] + df2[“tax”,] + .....
提供每个国家/地区的费用,但仅限 1 月份
我想要一组方程式,它可以为我提供所有县每月的总成本。换句话说,df3 的行数与df1(月)相同,列数与df2(国家/地区)相同。
编辑...粘贴在已关闭问题中发布的示例中:
# build df1 - cost of grains (with goofy data so I can track the arithemetic)
v1 <- c(1:12)
v2 <- c(13:24)
v3 <- c(25:36)
v4 <- c(37:48)
grain <- data.frame("wheat"=v1,"oats"=v2,"corn"=v3,"rye"=v4)
grain
# build df2 - additional costs (again, with goofy data to see what is being used where and when)
w1 <- c(1.3:4.3)
w2 <- c(5.3:8.3)
w3 <- c(9.3:12.3)
w4 <- c(13.3:16.3)
cost <- data.frame("Spain"=w1,"Peru"=w2,"Mexico"=w3,"Kenya"=w4)
row.names(cost) <- c("packing","shipping","tax","inspection")
cost
# assume 10% wheat, 30% oats and 60% rye with some clown-equation for total cost
# now for my feeble attempt at getting a dataframe that has 12 rows (months) and 4 column (countries)
total_cost <- data.frame( 0.1*grain[,"wheat"] +
0.3*grain[,"oats"] +
0.6*grain[,"rye"] +
cost["packing","Mexico"] +
cost["shipping","Mexico"] +
cost["tax","Mexico"] +
cost["inspection","Mexico"] )
total_cost
【问题讨论】:
-
我推荐一个可重现的例子。 stackoverflow.com/questions/5963269/…
-
查看
aggregate函数。
标签: r