首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-条件IF减去每行匹配条件

R-条件IF减去每行匹配条件
EN

Stack Overflow用户
提问于 2016-07-15 06:07:55
回答 1查看 119关注 0票数 0

我的数据集包含一个用于product类型和purchase数量的列。我希望能够从每行的实际purchase中减去每种product类型的平均purchase数量。

我有一个大致如下的数据集

代码语言:javascript
复制
library(dplyr)
set.seed(42)
product <- paste("prod - " , sample(c("A", "B", "C", "D"), size = 15, 
                                replace = TRUE))
purch <- sample(5:10, size = 15, replace = TRUE)

fake_data <- tibble(product, purch)

我可以使用split-apply-combine方法完成此操作,如下所示:

代码语言:javascript
复制
data_s <- split(fake_data, fake_data$product) #split
data_a <- lapply(data_s, function(m) cbind(m, m$purch - mean(m$purch))) #apply
data_c <- bind_rows(data_a) #combine

这是可行的,但它恰好发生在使用%>%dplyr的冗长且组织良好的链条中间。有没有一种方法可以用dplyr做到这一点,这样我就可以在不破坏链条的情况下获得我需要的东西?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-15 06:26:48

代码语言:javascript
复制
library(dplyr)
fake_data %>% group_by(product) %>% 
                 mutate(NewVal = purch - mean(purch)) %>% arrange(product)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38385015

复制
相关文章

相似问题

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