2014-12-05 5 views
2

Я работаю с набором данных, который настроен как 6 столбцов с возрастающими рядами. Заголовки являютсяУсловное среднее («Средние числа»)

Brand, Channel, Date, Metric A, Metric B, B/A 

Образец данных:

Brands <- c("Brand A","Brand B","Brand C") 
Channels <- (c("Channel A","Channel B","Channel A")) 
MetricA <- c(1:3) 
MetricB <- c(1:3) 
df <- data.frame(Brands,Channels,MetricA,MetricB) 
B/A <- df$MetricB/df$MetricA 
df <- cbind(B/A) 

Мне интересно знать, как усреднить столбец B/A если Brand == Brand A AND Channel == Channel B.

ответ

3

Я изменил это Марка и канала А, так как таковые существуют в вашем примере данных:

df$BdivA <- df$MetricB/df$MetricA 
df_sub <- subset(df, Brands=='Brand A' & Channels=='Channel A') 
mean(df_sub$BdivA) 

Если вы собираетесь делать более сложные вещи, как это, пакет dplyr велик. Вы можете использовать его для расчета средств для всех комбинаций Брендов и Каналов, таких как:

df %>% 
    mutate(BdivA = MetricB/MetricA) %>% 
    group_by(Brands, Channels) %>% 
    summarize(mean_BdivA = mean(BdivA)) 
+0

И, кстати, вы не можете назначить что-то вроде B/A - первая строка моего кода обеспечивает действительная альтернатива. – eamcvey

+0

Дух, должен был вспомнить подмножество. Есть ли альтернативный способ сделать это без создания нового подмножества? т. е. работает так же, как собственный расчет по сравнению с новым подмножеством? (только из любопытства) – GregdeLima

+0

Спасибо за отзыв! Я тоже в районе Дарем, кстати. Просто начните изучать больше R. Спасибо за вашу помощь. – GregdeLima

Смежные вопросы