Я думаю, что это зависит от фактической структуры данных. В вашем примере первая часть строки одинакова для каждой компании. Таким образом, вы можете создавать группы в соответствии с первой частью строки. Но это не работает, если какая-то часть в середине или в начале отличается. В любом случае, как и в вашем примере, приведенный ниже код работает:
library(tidyverse)
d <- data.frame(
comp_name = c("GM Global Technologies Operations LLC",
"GM Global Technologies Operations, Inc.",
"International Business Machines Corporation (IBM)",
"International Business Machines Corp (IBM)"),
value = c(1, NA, 2, NA))
d %>%
mutate(comparison = substr(comp_name, 1, 20)) %>%
arrange(comp_name) %>%
group_by(comparison) %>%
mutate(new_value = max(value, na.rm = TRUE))
#> # A tibble: 4 x 4
#> # Groups: comparison [2]
#> comp_name value comparison new_value
#> <fct> <dbl> <chr> <dbl>
#> 1 GM Global Technologies Operations LLC 1 GM Global Techno… 1
#> 2 GM Global Technologies Operations, Inc. NA GM Global Techno… 1
#> 3 International Business Machines Corp (… NA International Bu… 2
#> 4 International Business Machines Corpor… 2 International Bu… 2
Создано в 2020-04-03 пакетом Представить (v0.3.0)