根据涉及其他列的公式创建一个新列

时间:2019-09-02 04:04:27

标签: r data-cleaning

首先,我想根据“类型”(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

非常感谢您的帮助。

3 个答案:

答案 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)