Size: a a a

R (язык программирования)

2021 February 14

a

aGricolaMZ in R (язык программирования)
Stan
Привет! С утра занимаюсь крайне странным занятием. Есть 13к строк, которые имеют описание ОКВЭДа вида 71.12.7 Кадастровая деятельность. Пытаюсь с помощью stringr отделить все цифры от слов. Причем у меня может быть как ##.##.#, так и ##.# или ##.##. Как правильно тогда паттерн стоит написать?

Исходный пример кода: D <- str_split_fixed(Source_2$OKVED, "[:digit:].[:digit:].[:digit:] ", 2)
Я бы разбил по точке при помощи separate
источник

DK

Dm Kb in R (язык программирования)
Stan
Привет! С утра занимаюсь крайне странным занятием. Есть 13к строк, которые имеют описание ОКВЭДа вида 71.12.7 Кадастровая деятельность. Пытаюсь с помощью stringr отделить все цифры от слов. Причем у меня может быть как ##.##.#, так и ##.# или ##.##. Как правильно тогда паттерн стоит написать?

Исходный пример кода: D <- str_split_fixed(Source_2$OKVED, "[:digit:].[:digit:].[:digit:] ", 2)
Вы бы скинули пример строки, где  слова и цифры вместе
источник

S

Stan in R (язык программирования)
Dm Kb
Вы бы скинули пример строки, где  слова и цифры вместе
71.12.7 Кадастровая деятельность.
источник

UT

Unknown T. in R (язык программирования)
Stan
Привет! С утра занимаюсь крайне странным занятием. Есть 13к строк, которые имеют описание ОКВЭДа вида 71.12.7 Кадастровая деятельность. Пытаюсь с помощью stringr отделить все цифры от слов. Причем у меня может быть как ##.##.#, так и ##.# или ##.##. Как правильно тогда паттерн стоит написать?

Исходный пример кода: D <- str_split_fixed(Source_2$OKVED, "[:digit:].[:digit:].[:digit:] ", 2)
Я бы регулярной сделал. В pcre синтаксисе это выглядит так
\d{1,2}\.\d{1,2}(\.\d)? [а-яА-Я ]+\.
источник

S

Stan in R (язык программирования)
сейчас попрбую ко всем строкам
источник

UT

Unknown T. in R (язык программирования)
Я только не знаю, в R поддерживается pcre или нет.
источник

PU

Philipp Upravitelev in R (язык программирования)
поддерживается
источник

PU

Philipp Upravitelev in R (язык программирования)
только слеши двойные надо делать
источник

DK

Dm Kb in R (язык программирования)
Stan
71.12.7 Кадастровая деятельность.
Попробуйте что-то вроде этого:
tibble(str = c("71.12.7 Кадастровая деятельность.", "71.12 Кадастровая деятельность.", "71 Кадастровая деятельность.")) %>%
 mutate(okved = str_extract(str, "^\\d{1,2}\\.\\d{1,2}\\.\\d{1,2}|^\\d{1,2}\\.\\d{1,2}|^\\d{1,2}"),
        name =  str_extract(str, "(?<=\\d)\\s.+") %>% str_trim())
источник

ИП

Иван Поздняков... in R (язык программирования)
Dm Kb
Попробуйте что-то вроде этого:
tibble(str = c("71.12.7 Кадастровая деятельность.", "71.12 Кадастровая деятельность.", "71 Кадастровая деятельность.")) %>%
 mutate(okved = str_extract(str, "^\\d{1,2}\\.\\d{1,2}\\.\\d{1,2}|^\\d{1,2}\\.\\d{1,2}|^\\d{1,2}"),
        name =  str_extract(str, "(?<=\\d)\\s.+") %>% str_trim())
мне кажется самым удобным вытащить все до пробела регуляркой, потом сделать tidyr::separate() по точке
источник

DK

Dm Kb in R (язык программирования)
Иван Поздняков
мне кажется самым удобным вытащить все до пробела регуляркой, потом сделать tidyr::separate() по точке
Так мой вариант и вытащил все что до пробела и все что после... далее разбить оквэд на уровни, если нужно с помощью separate()
источник

ИП

Иван Поздняков... in R (язык программирования)
Dm Kb
Так мой вариант и вытащил все что до пробела и все что после... далее разбить оквэд на уровни, если нужно с помощью separate()
просто меня пугает вот эта регулярка: "^\\d{1,2}\\.\\d{1,2}\\.\\d{1,2}|^\\d{1,2}\\.\\d{1,2}|^\\d{1,2}», мне кажется можно просто что-то в духе «(?.*)\\s»
источник

ИП

Иван Поздняков... in R (язык программирования)
получить просто все значения до первого пробела, а по ним уже separate
источник

DK

Dm Kb in R (язык программирования)
Иван Поздняков
просто меня пугает вот эта регулярка: "^\\d{1,2}\\.\\d{1,2}\\.\\d{1,2}|^\\d{1,2}\\.\\d{1,2}|^\\d{1,2}», мне кажется можно просто что-то в духе «(?.*)\\s»
я просто показал два подхода, можно заменить это выражение на ".+(?=\\s)"
источник

DK

Dm Kb in R (язык программирования)
Dm Kb
я просто показал два подхода, можно заменить это выражение на ".+(?=\\s)"
нет такое не работает, заменил на ".{1,8}(?=\\s)" - и норм
источник

ГД

Григорий Демин... in R (язык программирования)
Philipp Upravitelev
уважаемые, дидактический вопрос.
постоянно сталкиваюсь с ситуацией, когда студенты, не имющие опыта работы с языками программирования, путаются в составных задачах. то есть, в рамках темы или конкретной функции они могут все сделать и понимают, как. а вот придумать, как совместить несколько выражений и операций - уже теряются.

например, цитата студента: ", по отдельности понятно, что дает функция, но крайне тяжело получается использовать их вместе, поэтому трачу много времени на попытки все правильно расположить в R".

собственно, вопрос. как с этим работать?
я вроде и даю составные задачки, и учу декомпозировать на выражения. но, видимо, недостаточно, либо все равно сложно.
Пытался объяснять, что R - это  конструктор,  а функции - детальки. И из деталек надо собрать что-нибудь полезное. Но такое объяснение совсем не работало. Вариант, который, как показалось, более-менее работает, но идеологически вредный. Говорить, что R - это как Excel. Все всегда думают, что они хороши в Экселе - значит и в R должно получится. R и Excel, действительно, если есть воображение, очень похожи. Только в Excelе кто-то уже заботливо и бестолково назвал для вас все переменные, а в R это надо делать самому. data.frame - это рабочий лист. В экселе,чтобы к листу обратится, надо писать восклицательный знак, а в R  - доллар. А посчитать формулы внутри листа - тут либо mutate, либо dt[]. Ну и так далее. Экселевский если - ifelse и т. д. В экселе почему-то у людей  декомпозиция на  цепочки вложенных формул получается лучше. Однажды я  видел, что человек сначала пишет на Экселе, потом практически дословно переводит на R:( Но результат, кстати правильный был. Главное, начинать с тем и задач, которые действительно сходным образом делаются. Это разные расчеты, фильтрация, агрегирование, а не графика и статистика. Если на этом рука немного набивается, то страх перед R/RStudio проходит и новые концепции даются легче.
источник

S

Stan in R (язык программирования)
Philipp Upravitelev
уважаемые, дидактический вопрос.
постоянно сталкиваюсь с ситуацией, когда студенты, не имющие опыта работы с языками программирования, путаются в составных задачах. то есть, в рамках темы или конкретной функции они могут все сделать и понимают, как. а вот придумать, как совместить несколько выражений и операций - уже теряются.

например, цитата студента: ", по отдельности понятно, что дает функция, но крайне тяжело получается использовать их вместе, поэтому трачу много времени на попытки все правильно расположить в R".

собственно, вопрос. как с этим работать?
я вроде и даю составные задачки, и учу декомпозировать на выражения. но, видимо, недостаточно, либо все равно сложно.
Тут идеально SPSS выручает. Я показываю сразу Syntax файл, говорю: вот смотрите, набор буков, но по строчкам разбивается на следующую коллекцию задач. А теперь смотрите, через какое количество аргументов я делаю то же самое в R. В моем случае самая большая проблема — объяснить студентам искусство выборки данных по переменным и кейсам [#, #]. Остальное более менее понятно.
источник

DK

Dm Kb in R (язык программирования)
Philipp Upravitelev
уважаемые, дидактический вопрос.
постоянно сталкиваюсь с ситуацией, когда студенты, не имющие опыта работы с языками программирования, путаются в составных задачах. то есть, в рамках темы или конкретной функции они могут все сделать и понимают, как. а вот придумать, как совместить несколько выражений и операций - уже теряются.

например, цитата студента: ", по отдельности понятно, что дает функция, но крайне тяжело получается использовать их вместе, поэтому трачу много времени на попытки все правильно расположить в R".

собственно, вопрос. как с этим работать?
я вроде и даю составные задачки, и учу декомпозировать на выражения. но, видимо, недостаточно, либо все равно сложно.
Я помню как в детстве жаловался учителю, что буквы понимаю, но вместе их сложить в слова и прочесть - не могу((( А потом как-то получилось. Сейчас мне кажется научится делать модели на tidyverse проще чем в excel, хотя я сам в R пришёл из excel и SPSS. Может действительно проще давать материалы с каким то GUI ??? за которым R стоит ... сейчас же много таких решений... в детстве же все книжки с картинками были ))
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Philipp Upravitelev
уважаемые, дидактический вопрос.
постоянно сталкиваюсь с ситуацией, когда студенты, не имющие опыта работы с языками программирования, путаются в составных задачах. то есть, в рамках темы или конкретной функции они могут все сделать и понимают, как. а вот придумать, как совместить несколько выражений и операций - уже теряются.

например, цитата студента: ", по отдельности понятно, что дает функция, но крайне тяжело получается использовать их вместе, поэтому трачу много времени на попытки все правильно расположить в R".

собственно, вопрос. как с этим работать?
я вроде и даю составные задачки, и учу декомпозировать на выражения. но, видимо, недостаточно, либо все равно сложно.
Я бы сначала проверил, действительно ли есть понимание того, что даёт функция.

Ну, то есть, попросил бы написать какую-нибудь композицию, выводя каждый результат и объясняя его. Нудно, но работает.
источник

S

Stan in R (язык программирования)
Иван Поздняков
readr::parse_number() не подойдет?
Не сработало нормально, обрезало :(
источник