Раздражающе, Javascript не предоставляет рекурсивный параметр PCRE (?R)
, поэтому далеко не просто справиться с вложенной проблемой. Однако это может быть сделано.
Я не буду воспроизводить код, но если вы посмотрите блог Стива Левитана , у него есть хорошие статьи по этому вопросу. Он должен это сделать, он, вероятно, является ведущим авторитетом в RegExp в JS. Он написал XRegExp , который заменяет большинство битов PCRE, которые отсутствуют, есть даже плагин Match Recursive !
Я думаю, что вы можете сделать эту работу, если вы приложите «незаконные» имена столбцов в обратном направлении. Например, скажем, я начинаю с этого фрейма данных (называемый df
):
BILLING.STATUS.(COMPLETED./.INCOMPLETE) ORDER.VALUE.(USD)
1 A 0.01544196
2 A 0.95522706
3 B 1.13479303
4 B 1.22848285
Тогда я могу суммировать его следующим образом:
dat %>% group_by(`BILLING.STATUS.(COMPLETED./.INCOMPLETE)`) %>%
summarise(count=n(),
mean = mean(`ORDER.VALUE.(USD)`))
Предоставление:
BILLING.STATUS.(COMPLETED./.INCOMPLETE) count mean
1 A 2 0.4853345
2 B 2 1.1816379
Backticks также пригодится для обращения к именам переменных или их создания с помощью пробелов. Вы можете найти ряд вопросов, относящихся к dplyr
и обратным выводам на SO, и есть также обсуждение обратных ссылок в help для Quotes
.
Я просто использую этот не-ответ в качестве контр-примера или иллюстрации ограничений для метода обратной линии. (Это был первый стратег, который я пробовал. Возможно, это тот факт, что две языковые операции («(» и «/») обрабатываются смежно, что приводит к сбою.)
names(iris)[5] <- "Specie(/)s"
library(dplyr)
by_species <- iris %>% group_by(`Specie(/)s`)
by_species %>% summarise_each(funs(mean(., na.rm = TRUE)))
#Error: cannot modify grouping variable
Пробовал разновидность или другие ориентированные на язык усилия с quote
, as.name
и substitute
, которые также потерпели неудачу. (Хотелось бы, чтобы был механизм, чтобы просить, чтобы это поглотило нижнюю часть ответов.)
.
не настроено для обработки недопустимых имен столбцов.
– eipi10
27 January 2015 в 06:36
group_by
, так и дляselect
. Я спотыкаюсь, когда я перейду к формуле вsummarise
, то естьorders.n %>% group_by(ORDER.NO) %>% summarize(total=sum(
ORDER.VALUE. (USD)))
, что, по понятным причинам, вызывает ошибкуError in sum("1603") : invalid 'type' (character) of argument
. Но это уже выходит за рамки этого вопроса. – Ricky 27 January 2015 в 05:04