Таблица данных R - Агрегация - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу объединить данные в R, но очень общим способом с правой стороны (столбцы), хранящиеся в объекте в виде строки.Ниже приведен пример выражения

aggregate(PATTERN_ID ~ Year + Week), data, length)

Так что в моем случае правая сторона, которая называется «Год + неделя», будет изменяться так, как требуется, и я хочу передать ее в виде строки, хранящейся в переменной.Я пытался использовать стратегию оценки, но не дает требуемого результата.Вот то, что я попробовал:

exp_aggregate_by  = 'Year + Week'
aggregate(PATTERN_ID ~ eval.quoted(parse(text = exp_aggregate_by)), data, length)

Любой вклад от людей будет высоко ценится.Через таблицу данных тоже все в порядке.Спасибо

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Ответ с data.table.Я также включил ответ, используя формулу в совокупности для полноты.

vars <- c('Year', 'Week')

# with aggregate
form <- formula(paste('PATTERN_ID', paste(vars, collapse = '+'), sep = '~'))
aggregate(form, data, length)

# with data.table
setDT(data)
data[, length(PATTERN_ID), by = vars]
0 голосов
/ 27 сентября 2018

Создайте формулу с помощью paste, и она должна работать

data(mtcars)
grp <- 'cyl + gear'
aggregate(formula(paste('mpg ~', grp)), mtcars, length)

Для набора данных ОП:

aggregate(formula(paste('PATTERN_ID ~', exp_aggregate_by)), data, length)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...