Я пишу функцию для агрегирования кадра данных, и она должна быть в целом применима к широкому спектру наборов данных. Одним из шагов этой функции является функция filter
dplyr, используемая для выбора из данных только типов рекламной кампании, соответствующих задаче. Поскольку мне нужна функция должна быть гибкой, я хочу ad_campaign_types как вход, но это делает фильтрацию вида волосатый, а так:Как фильтровать столбец несколькими, гибкими критериями
aggregate_data <- function(ad_campaign_types) {
raw_data %>%
filter(ad_campaign_type == ad_campaign_types) -> agg_data
agg_data
}
new_data <- aggregate_data(ad_campaign_types = c("campaign_A", "campaign_B", "campaign_C"))
Я думаю, что выше будет работать, но в то время как он работает, как ни странно это возвращает только малую долю того, что должен быть фильтрованный набор данных. Есть лучший способ сделать это?
Другой крошечный пример сменного кода:
ad_types <- c("a", "a", "a", "b", "b", "c", "c", "c", "d", "d")
revenue <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
data <- as.data.frame(cbind(ad_types, revenue))
# Now, filtering to select only ad types "a", "b", and "d",
# which should leave us with only 7 values
new_data <- filter(data, ad_types == c("a", "b", "d"))
nrow(new_data)
[1] 3