首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于case_when的数值计算

基于case_when的数值计算
EN

Stack Overflow用户
提问于 2020-08-05 13:50:52
回答 1查看 514关注 0票数 0

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-05 13:55:35

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

代码语言:javascript
复制
mapping_factor <- tibble(Group = c("A", "B"), f = c(100, 120))

然后,您可以简单地加入映射表,然后再进行除法:

代码语言:javascript
复制
df %>% left_join(mapping_factor, by = "Group") %>% 
  mutate(var2 = var1 / f)

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

代码语言:javascript
复制
df %>% mutate(var2 = var1 / case_when(Group == "A" ~ 100, 
                                      Group == "B" ~  120))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63266647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档