首先,我想根据“类型”(1:5)列定义的产品类型创建一个名为“总价”的新列。数据如下:
[:alpha:]
总价格可以通过将每种产品的数量乘以相应的价格来计算:
***每种产品的价格:类型1-$ 10;类型2- $ 20;类型3- $ 30;类型4- $ 40;类型5- $ 50
所以我希望看起来像这样:
df <- data.frame('type'=c(1,2,3,4,5), 'quantity'=c(1,20,3,4,50))
df
type quantity
1 1 1
2 2 20
3 3 3
4 4 4
5 5 50
然后,我需要将此新创建的列与原始数据作为最后一列进行连接。
我猜伪代码看起来像这样:
type quantity totalprice
1 1 1 10
2 2 20 400
3 3 3 90
4 4 4 160
5 5 50 2500
非常感谢您的帮助。
答案 0 :(得分:1)
我建议只添加一个与type
相对应的乘数列,然后使用该列来生成总价:
df$multiplier <- 10
df$totalprice <- df$multiplier * df$quantity
答案 1 :(得分:1)
如果相应的价格具有严格的规则(类型X 10),则可以通过以下代码生成该价格:
require(dplyr)
df %>%
mutate(price = type * 10,
totalprice = quantity * price)
您在df上还有更多行吗?还是没有价格规则?
答案 2 :(得分:1)
我同意@Elin,创建具有所有类型及其对应的price
的参考数据框。 merge
与原始df
乘以"type"
,然后乘以quantity * price
ref_data <- data.frame(type = 1:5, price = c(10, 20, 30, 40, 50))
transform(merge(df, ref_data, by = "type"), totalprice = quantity * price)
# type quantity price totalprice
#1 1 1 10 10
#2 2 20 20 400
#3 3 3 30 90
#4 4 4 40 160
#5 5 50 50 2500
在dplyr
中,您可以
library(dplyr)
inner_join(df, ref_data, by = "type") %>%
mutate(totalprice = quantity * price)