使用 case_when 进行数值计算

Numerical calculation using case_when

我有以下类型的数据 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 函数族进行数值计算的任何建议?

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

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

然后你可以简单地加入映射table然后再除:

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