2016-07-14 47 views
0

我的数据集包含一个product类型的列和purchase数量的列。我希望能够从每行的实际purchase中减去每个product类型的平均purchase数量。R - 条件IF减号每行匹配条件

我有一个数据集,看起来大致是这样的

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) 

我可以用做如下拆分申请-结合方法:

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来做到这一点,这样我就可以在不破坏链条的情况下得到我所需要的东西?

谢谢。

回答

1
library(dplyr) 
fake_data %>% group_by(product) %>% 
       mutate(NewVal = purch - mean(purch)) %>% arrange(product) 
+0

工程就像一个魅力。谢谢。 –