2016-07-14 43 views
0

私のデータセットには、productタイプのカラムとpurchaseのカラムが含まれています。それぞれのpurchaseからの平均値をそれぞれproductタイプから減算したいと考えています。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) 

のように私は、スプリット適用-combineメソッドを使用してこれを行うことができますに見えるデータセットがあります。

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

魅力的な作品です。ありがとうございました。 –