Как я могу изменить эту функцию, чтобы она возвращала уникальный идентификатор, сгенерированный из определенных полей? - PullRequest
0 голосов
/ 14 сентября 2018

Я пишу блестящее приложение, которое записывает данные из фиктивной формы Google в лист Google.Я хочу создать функцию, которая использует модификации String для вставки уникального идентификатора на основе пользовательского ввода.Эта функция будет вызываться локально после загрузки файла, и воспроизводимость очень важна .. поэтому я думаю, что она должна зависеть от входных данных, а не генерироваться случайным образом, как в пакете "ids" ...

ВотПример кода для функции:

#Unique_id produces a 9 digit code by calling phone number, timestamp, and two letters - first and last name

unique_id <- function(f, l, y, z){

##where f is the column of FIRST NAME

    f %>% str_replace(" ", "") %>% toupper() %>% str_sub(1, 2)

##where l is LAST NAME

    l %>% str_replace(" ", "") %>% toupper() %>% str_sub(1, 2)

##Where y is TIMESTAMP

    y %>% paste0() %>% str_extract("[:digit:][:digit:]-[:digit:][:digit:]") %>% str_replace_all("-", "")

##Where z is phone number formatted NNN-NNN-NNNN

    z %>% str_extract("-[:digit:][:digit:][:digit:]-") %>% str_replace_all("-", "")

##Where UID is the UserID generated...

     UID <- c(f, l , y, z)

    UID <- str_replace("-", "")

    return(UID)
}

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

Вот пример информации, которая может быть в кадре данных, на котором я хочу ее вызвать ...

Phone          Address          FirstName  LastName           Timestamp
1 951-349-8967  2134 Road Road   John       jerrod     2018-09-14 20:09:38
2 342-651-3752  154 House St.   Dora       angela     2018-09-14 20:09:38

Идеальным результатом вызова этой функции в строке 1 будетUID JJ0914349.Затем я вставил бы его в новый столбец, поле «UID».

Прямо сейчас я получаю

 Error: Empty `pattern` not supported 

Любая помощь приветствуется.

1 Ответ

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

Поскольку все необходимые данные находятся в фиксированных позициях:

DF %>% mutate(id = paste0(toupper(substr(FirstName, 1, 1)),
                          toupper(substr(LastName, 1, 1)),
                          substr(Timestamp, 6, 7),
                          substr(Timestamp, 9, 10), 
                          substr(Phone, 5, 7)))

дает:

         Phone        Address FirstName LastName           Timestamp        id
1 951-349-8967 2134 Road Road      John   jerrod 2018-09-14 20:09:38 JJ0914349
2 342-651-3752  154 House St.      Dora   angela 2018-09-14 20:09:38 DA0914651

Примечание

Мы использовали эти данные:

Lines <- "Phone,          Address,          FirstName,  LastName,           Timestamp
1,951-349-8967,  2134 Road Road,   John,       jerrod,     2018-09-14 20:09:38
2,342-651-3752,  154 House St.,   Dora,       angela,     2018-09-14 20:09:38"

DF <- read.csv(text = Lines, as.is = TRUE, strip.white = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...