首页 > 解决方案 > R找到有条件的正确名称

问题描述

我有以下数据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,"\\|")

我不知道我的下一步是什么。

你有想法吗?

谢谢你的帮助!

标签: r

解决方案


我们可以做的

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))

推荐阅读