【问题标题】:Numerical calculation using case_when使用 case_when 进行数值计算
【发布时间】:2020-08-05 13:50:52
【问题描述】:

我有以下类型的数据 df <- data.frame(Group=rep(c("A", "B"), 3), var1 = rnorm(6)*100)

我想通过将 var1 除以每个组的特定数字来创建一个新变量。

我试过了,df %>% mutate(var2 = case_when(Group == "A" ~ var1/100, Group == "B" ~ var1/120)) 有什么建议可以使用case_when 或任何替代的apply 系列函数进行数值计算?

【问题讨论】:

    标签: r dataframe dplyr case-when


    【解决方案1】:

    如果您的数据很大,我建议您创建一个包含每个组的因子的映射表:

    mapping_factor <- tibble(Group = c("A", "B"), f = c(100, 120))
    

    然后你可以简单地加入映射表然后划分:

    df %>% left_join(mapping_factor, by = "Group") %>% 
      mutate(var2 = var1 / f)
    

    如果您的数据不是那么大,您没有很多不同的Group 属性,您可以使用case_when

    df %>% mutate(var2 = var1 / case_when(Group == "A" ~ 100, 
                                          Group == "B" ~  120))
    

    【讨论】:

    • 两种解决方案都很好 - 接受的答案!我有一个包含多个组的更大数据集。
    猜你喜欢
    • 1970-01-01
    • 2022-06-14
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多