Я создал функцию в R
, которая принимает фиксированный фрейм данных и использует dplyr
для предоставления мне сводной статистики (например, среднего значения определенной переменной), сгруппированной по выбранной переменной аргумента.Вот некоторый код, показывающий игрушечный фрейм данных и мою функцию:
#Create data frame for analysis
DF <- data.frame(Type1 = c(0,0,1,1,0,1,1,0,1,0,1,1,1,0),
Type2 = c(1,1,1,1,1,1,2,2,2,2,3,3,3,3),
Output = c(4,2,7,5,1,1,7,8,3,2,5,4,3,6));
#Inspect the data-frame
DF;
Type1 Type2 Output
1 0 1 4
2 0 1 2
3 1 1 7
4 1 1 5
5 0 1 1
6 1 1 1
7 1 2 7
8 0 2 8
9 1 2 3
10 0 2 2
11 1 3 5
12 1 3 4
13 1 3 3
14 0 3 6
#Create a function that summarises the mean output grouped by input variable
MEAN_OUT <- function(VAR) { DF %>% group_by(!! sym(VAR)) %>%
summarise(Mean = mean(Output)) %>%
as.data.frame(); }
#Call the function grouping by variable 'Type1'
MEAN_OUT('Type1')
Type1 Mean
1 0 3.714286
2 1 4.444444
В данный момент я могу вызвать MEAN_OUT('Type1')
или MEAN_OUT('Type2')
, и они дают мне правильные сводки, сгруппированные по любой из этих переменных аргумента,Однако я хотел бы также иметь возможность вызывать MEAN_OUT(c('Type1','Type2'))
, чтобы получить сводку, сгруппированную по обеим переменным.Вы можете сделать это в функции dplyr::group_by
, но я не могу понять, как это сделать, когда этот материал обернут в мою функцию.Если я использую свою текущую функцию (показанную выше), чтобы попытаться сгруппировать по обеим переменным, я получаю следующую ошибку:
MEAN_OUT(c('Type1','Type2'))
Error: Only strings can be converted to symbols