Size: a a a

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

2020 June 21

VK

Vladimir Kuchinsky in R (язык программирования)
как я понял пакета нет такого, надо колхозить в коде - ок
источник

PU

Philipp Upravitelev in R (язык программирования)
Vladimir Kuchinsky
как я понял пакета нет такого, надо колхозить в коде - ок
чот я не понял, в чем проблема и зачем пакет
df1 <- data.frame(
 klient = c(
   "Начисление Клиент 1. Магазин 1",
   "Начисление Клиент 15. Магазин 1",
   "Начисление Клиент 20. Магазин 1",
   "Начисление Клиент 15. Магазин 1",
   "Начисление Клиент 18.3 Магазин 1"
 ),
 stringsAsFactors = FALSE
)

df2 <- data.frame(
 klientName = c("Клиент 1", "Клиент 15", "Клиент 20", "Клиент 18.3"),
 who = c("dir", "pro", "dir", "pro"),
 stringsAsFactors = FALSE
)

df1$klientName <- gsub('(Начисление )(Клиент [0-9]*)(\\..*)', '\\2', df1$klient)
df1 <- merge(df1, df2, by = 'klientName', all.x = TRUE)
df1
источник

PU

Philipp Upravitelev in R (язык программирования)
> df1
 klientName                           klient  who
1   Клиент 1   Начисление Клиент 1. Магазин 1  dir
2  Клиент 15  Начисление Клиент 15. Магазин 1  pro
3  Клиент 15  Начисление Клиент 15. Магазин 1  pro
4  Клиент 18 Начисление Клиент 18.3 Магазин 1 <NA>
5  Клиент 20  Начисление Клиент 20. Магазин 1  dir
источник

PU

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

PU

Philipp Upravitelev in R (язык программирования)
но это уже зависит от того, как формируется запись по клиенту
источник

VK

Vladimir Kuchinsky in R (язык программирования)
есть один прикол с 18.3, а в остальном без точки
источник

VK

Vladimir Kuchinsky in R (язык программирования)
А можно вопрос, а в replacement это что значит?
источник

VK

Vladimir Kuchinsky in R (язык программирования)
как я понял вы вот эту конструкцию использовали
источник

VK

Vladimir Kuchinsky in R (язык программирования)
источник

PU

Philipp Upravitelev in R (язык программирования)
это вторая группа в регулярке
то, что в паттерне - обратите внимание, разбито на группы круглыми скобками
соответственно, выражение значит "найти группы по этому паттерну и замени все группы значением второй группы"
источник

VK

Vladimir Kuchinsky in R (язык программирования)
Прикольно!!! Т.е в патерне 3 группы, а мы выбираем вторую. Если я вас правильно понял, то это круто)))
источник

PU

Philipp Upravitelev in R (язык программирования)
Vladimir Kuchinsky
Прикольно!!! Т.е в патерне 3 группы, а мы выбираем вторую. Если я вас правильно понял, то это круто)))
да, правильно поняли
вообще, регулярку можно переписать вот так, и она будет корректно обрабатывать 18.3
df1$klientName <- gsub('Начисление\\s', '', df1$klient)
df1$klientName <- gsub('\\sМагазин.*$', '', df1$klientName)
df1$klientName <- gsub('\\.$', '', df1$klientName)
источник

PU

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

VK

Vladimir Kuchinsky in R (язык программирования)
огнище!!! я бы это дольше рожал бы. Облазил бы тучу форумов. 🤝
источник

PU

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

VK

Vladimir Kuchinsky in R (язык программирования)
согласен, много где эти регулрки вылазят, не только в R
источник

PU

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

a

aGricolaMZ in R (язык программирования)
Да, сегодня я с look around свернул горы одной регуляркой
источник

R

R in R (язык программирования)
всякие лукахеды, кстати, как минимум раньше не работали в дефолтной версии (не-перл) регулярок в R, и это, похоже, мало кого волновало, т.к. даже в dplyr переключатель на perl-регулярки в matches() добавили только недавно
источник

R

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