【发布时间】:2021-09-21 09:02:07
【问题描述】:
我的问题与我自己无法根据年份为我的数据框分配折扣率(变量)有关。
我有一个包含客户详细信息的数据框,然后是按年份划分的每种类型(M、R 和 O)的折扣率,其中 1=2019 和 2=2020 等。示例数据如下:
df1 <- data.frame(ID = c(1, 2, 3, 4, 5),
customer_type = c('M', 'R', 'O', 'M', 'M'),
year = c(1, 1, 2, 2, 3))
现在我有 2019 年到 2023 年 5 年的折扣率,例如:
discount_rates <- data.frame(year = c(2019, 2020, 2021, 2022, 2023),
metro_M = c(0.1,0.2,0.3,0.3,0.1),
regional_R = c(0.01, 0.1, 0.02, 0.11, 0.09),
overseas_O = c(0.2, 0.3, 0.4, 0.5, 0.5))
我想要做的是将相关年份的折扣率添加到 df1。
示例输出如下: |编号 |customer_type|year|discount_rate| |----|-------------|----|-------------| | 1 | M |1 |0.1 | | 2 | R |1 |0.01 | | 3 | O |2 |0.3 | | 4 | M |2 |0.2 | | 5 | M |3 |0.3 |
我尝试过的是使用 case_when 语句:
df1$discount_rate <-
case_when(
df1$customer_type == "M" ~ metro_M[[df1$year]],
df1$customer_type == "O" ~ overseas_O[[df1$year]],
df1$customer_type == "R" ~ regional_R[[df1$year]],
TRUE ~ 0
)
但是这样我得到错误:“尝试在vectorIndex中选择多个元素”
我对此感到困惑,如果其他人知道更好的方法,我将不胜感激?
【问题讨论】:
标签: r dataframe dplyr variable-assignment