【问题标题】:R formula for new column value dataframe based on other value column基于其他值列的新列值数据框的 R 公式
【发布时间】:2019-03-29 23:22:34
【问题描述】:

我有这个数据框:

restaurant = c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5)
product = c("small", "medium", "large",
            "small", "medium", "large",
            "small", "medium", "large",
            "small", "medium", "large",
            "small", "medium", "large")
unitssold = c(30,25,59,20,10,50,10,15,20,5,6,12,25,67,100)
id = c(1,5,4,3,2,1,5,6,7,4,3,9,1,5,3)
df <- data.frame(restaurant,product,unitssold,id)

我想定义一个新的列名称 SaleKG。要计算这个数字: - 如果一小部分比 = unitsold * 5 - 如果中等部分比 = unitsold * 8 - 如果大部分比 = unitsold *10

我怎样才能做到这一点?

【问题讨论】:

标签: r dataframe


【解决方案1】:

tidyverse:

df%>%
   mutate(SaleKG=case_when(
     product=="small"~unitssold*5,
     product=="medium"~unitssold*8,
     product=="large"~unitssold*10,
     T~unitssold))
   restaurant product unitssold id SaleKG
1           1   small        30  1    150
2           1  medium        25  5    200
3           1   large        59  4    590
4           2   small        20  3    100
5           2  medium        10  2     80
6           2   large        50  1    500
7           3   small        10  5     50
8           3  medium        15  6    120
9           3   large        20  7    200
10          4   small         5  4     25
11          4  medium         6  3     48
12          4   large        12  9    120
13          5   small        25  1    125
14          5  medium        67  5    536
15          5   large       100  3   1000

【讨论】:

    【解决方案2】:

    这是一个以R为基础的解决方案:

    df$SaleKG <- df$unitssold * sapply(as.character(df$product), switch, small=5, medium=8, large=10)
    

    以及来自carrecode 的解决方案:

    library("car")
    df$SaleKG <- df$unitssold * recode(as.character(df$product), "'small'=5; 'medium'=8; 'large'=10")
    

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多