R найти правильное имя с условиями - PullRequest
1 голос
/ 06 апреля 2020

У меня есть следующие данные data <- data.frame(names = c("ALBERT | ALBERTOS | ALBERT 2","PIERRE | PIERRE 2 | PIERRE_SECOND | PIERRE_SECOND 2"))

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

-> Первое условие: Частота: появляется «ALBERT» 2 поэтому первая строка должна возвращать «ALBERT»

-> Второе условие: самая длинная строка: «PIERRE» и «PIERRE_SECOND» появляются 2 раза, поэтому я хочу оставить «PIERRE_SECOND».

Я начинаю с разделения строк каждой строки с разделителем "\ |" : data$names <- as.character(data$names); data2 <- strsplit(data$names,"\\|")

и я не знаю, каков мой следующий шаг.

У вас есть идея?

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 06 апреля 2020

Мы можем сделать

library(dplyr)
library(tidyr)
library(stringr)
data %>% 
  mutate(rn = row_number()) %>% 
  separate_rows(names, sep="\\s*\\|\\s*") %>%
  mutate(names = str_remove(names, "\\s+\\d+$")) %>%
  add_count(rn, names) %>% 
  group_by(rn) %>%
  slice(which.max(n))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...