Size: a a a

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

2020 December 24

ЭА

Эдик Амперян... in R (язык программирования)
Эдик Амперян
Как формировать запросы по R в поисковике...

sprintf("How can this be solved in R %s",
       switch(1 + trunc(runif(1, 0, 6)),
              "at all?",
              "in a quick-and-dirty way?",
              "in Hadley-Wickham-style?",
              "without a loop?",
              "without nested loops?",
              "in a way somebody can understand?"))
источник

AC

Andrey C. in R (язык программирования)
Подскажите, пожалуйста, как проще всего создать md5 из значений и имен столбцов для каждой строки data.table с произвольным (неизвестным заранее) набором столбцов?
источник

.

.everleazy in R (язык программирования)
Всем доброго времени суток!
Может кто-то подсказать как мне уже прекратить бить себя по лицу и сделать следующее:
Дано 2 датафрейма с значениями ("А" и "В"). В фрейме "A" есть столбец с именами, а в фрейме "B" столбец с ФИО/ИО/ФИ = нужно достать только имена из "A" и добавить столбцом в "B".

Идей нет. Пояснительную картинку прикладываю)
Буду рад любой помощи/подсказке)
источник

AC

Andrey C. in R (язык программирования)
.everleazy
Всем доброго времени суток!
Может кто-то подсказать как мне уже прекратить бить себя по лицу и сделать следующее:
Дано 2 датафрейма с значениями ("А" и "В"). В фрейме "A" есть столбец с именами, а в фрейме "B" столбец с ФИО/ИО/ФИ = нужно достать только имена из "A" и добавить столбцом в "B".

Идей нет. Пояснительную картинку прикладываю)
Буду рад любой помощи/подсказке)
1) делаете список уникальных имен из A, назовем его names_list
2) для каждой строки из B вытаскиваете имя с помощью str_extract(B$name, paste0(‘\\b(’,paste(names_list, collapse=‘|’),’)\\b’))
примерно
источник

IS

Ivan Struzhkov in R (язык программирования)
.everleazy
Всем доброго времени суток!
Может кто-то подсказать как мне уже прекратить бить себя по лицу и сделать следующее:
Дано 2 датафрейма с значениями ("А" и "В"). В фрейме "A" есть столбец с именами, а в фрейме "B" столбец с ФИО/ИО/ФИ = нужно достать только имена из "A" и добавить столбцом в "B".

Идей нет. Пояснительную картинку прикладываю)
Буду рад любой помощи/подсказке)
Вытащите частотность отдельных слов, как правило имена значительно чаще встречаются чем фамилии. После этого регулярка на то что встретится любое из имен/ или просто отбор по вектору
источник

AC

Andrey C. in R (язык программирования)
Ivan Struzhkov
Вытащите частотность отдельных слов, как правило имена значительно чаще встречаются чем фамилии. После этого регулярка на то что встретится любое из имен/ или просто отбор по вектору
там только известные имена из таблицы нужны
источник

IS

Ivan Struzhkov in R (язык программирования)
Andrey C.
там только известные имена из таблицы нужны
Ну из таблицы и вытащить
источник

AC

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

IS

Ivan Struzhkov in R (язык программирования)
Почему? Как именно вы понимаете что это имя?
источник

IS

Ivan Struzhkov in R (язык программирования)
А если там 13 гигов имен?
источник

AC

Andrey C. in R (язык программирования)
в таблице А только имена (см скриншот)
источник

IS

Ivan Struzhkov in R (язык программирования)
А да, соррян, не прочитал что есть датафрейм с именами
источник

.

.everleazy in R (язык программирования)
Andrey C.
1) делаете список уникальных имен из A, назовем его names_list
2) для каждой строки из B вытаскиваете имя с помощью str_extract(B$name, paste0(‘\\b(’,paste(names_list, collapse=‘|’),’)\\b’))
примерно
Принято! То что нужно, спасибо большое)
источник

.

.everleazy in R (язык программирования)
Ivan Struzhkov
А да, соррян, не прочитал что есть датафрейм с именами
Нет проблем)
Спасибо за помощь все равно)
источник

АК

Артём Клевцов... in R (язык программирования)
Уточни что именно нужно в результате. Что на входе что на выходе.
источник

AC

Andrey C. in R (язык программирования)
Артём Клевцов
Уточни что именно нужно в результате. Что на входе что на выходе.
ну вот сейчас я примерно такой вариант нашел
distractors <- data.table(a = rnorm(16), b = rnorm(16), c = rnorm(16))
     
distractors[, col_string := do.call(paste,
                       c(lapply(names(distractors), function(x) paste(x, get(x), sep=":")),              
                         sep="_"))]
distractors[, md5 := digest(col_string), by = col_string]

но может есть попроще вариант
источник

АК

Артём Клевцов... in R (язык программирования)
Andrey C.
ну вот сейчас я примерно такой вариант нашел
distractors <- data.table(a = rnorm(16), b = rnorm(16), c = rnorm(16))
     
distractors[, col_string := do.call(paste,
                       c(lapply(names(distractors), function(x) paste(x, get(x), sep=":")),              
                         sep="_"))]
distractors[, md5 := digest(col_string), by = col_string]

но может есть попроще вариант
openssl::md5 векторизован.
Замечу, что при таком решении на хэш будет влиять порядок столбцов.
источник

AC

Andrey C. in R (язык программирования)
Артём Клевцов
openssl::md5 векторизован.
Замечу, что при таком решении на хэш будет влиять порядок столбцов.
Спасибо! Хорошее замечание
источник

АК

Артём Клевцов... in R (язык программирования)
Andrey C.
ну вот сейчас я примерно такой вариант нашел
distractors <- data.table(a = rnorm(16), b = rnorm(16), c = rnorm(16))
     
distractors[, col_string := do.call(paste,
                       c(lapply(names(distractors), function(x) paste(x, get(x), sep=":")),              
                         sep="_"))]
distractors[, md5 := digest(col_string), by = col_string]

но может есть попроще вариант
openssl::md5(jsonlite::toJSON(df, dataframe = "rows", collapse = FALSE))
источник

АК

Артём Клевцов... in R (язык программирования)
Артём Клевцов
openssl::md5(jsonlite::toJSON(df, dataframe = "rows", collapse = FALSE))
И предварительно setcolorder с сортировкой.
источник