2016-07-14 36 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

工程就像一個魅力。謝謝。 –