использовать функцию фильтра в функции суммирования из dplyr

#r #dplyr

#r #dplyr

Вопрос:

Есть ли способ использовать функцию фильтрации внутри summarise, например:

 #I have a dataset with 5 columns Price, Type, Amount USD, date 
# I only want the mean price of the rows that are not Type == "SELL"

data = summarise(Price = filter(!Type == "SELL") %>% mean(Price), Amount = sum(Amount), USD = sum(USD), date = min(date))
 

Ответ №1:

Вы можете использовать :

 library(dplyr)

data %>%
  summarise(Price = mean(Price[Type != 'SELL']), 
            Amount = sum(Amount), 
            USD = sum(USD), 
            date = min(date))
 

Чтобы использовать его в каналах :

 data %>%
  summarise(Price = mean(data %>% filter(Type != 'SELL') %>% pull(Price)), 
            Amount = sum(Amount), 
            USD = sum(USD), 
            date = min(date))
 

Комментарии:

1. спасибо, так что просто чтобы убедиться, что невозможно использовать каналы внутри функции summarise?

2. Это так, но я нахожу это очень запутанным для этой задачи. Смотрите обновленный ответ.