gpt4 book ai didi

r - 检测不同数据框中的字符串,从 R 中的列返回值

转载 作者:行者123 更新时间:2023-12-04 03:34:24 24 4
gpt4 key购买 nike

在数据框中我有一个字符列(一个词),其中每个词可以出现多次

word = c(
"OMEPRAZOL",
"PARACETAMOL",
"HIDROFEROL",
"ENALAPRIL",
"PARACETAMOL",
"NOISE"
)

在不同的数据框中,我有一列包含字符串,另一列包含关联的 ID 代码:

string_code = data.frame(
string = c(
"OMEPRAZOL XXXX",
"OMEPRAZOL YYYY",
"PARACETAMOL/A XXXX",
"PARACETAMOL/B YYYY",
"HIDROFEROL XXXX",
"ENALAPRIL XXXX",
"ENALAPRIL YYYY"),
code = c(
"11",
"11",
"22",
"22",
"33",
"44",
"44")
)

我想在 string_code$string 中查找 word 的每个元素,当有匹配项时,返回 string_code$code 中的关联 ID (只有第一个匹配项,因为可能有多个匹配项,而且 ID 无论如何都是相同的)- 如果没有匹配项,则为 NA。

word_code = data.frame(
word = c(
"OMEPRAZOL",
"PARACETAMOL",
"HIDROFEROL",
"ENALAPRIL",
"PARACETAMOL",
"NOISE"),
code = c(
"11",
"22",
"33",
"44",
"22",
"NA")
)

最佳答案

这是 fuzzyjoin 包中 regex_full_join() 的潜在应用。

尝试

    fuzzyjoin::regex_full_join(string_code, word) %>% select(-1) %>% distinct

获得

>   fuzzyjoin::regex_full_join(string_code, word) %>% select(-1) %>% distinct
Joining by: "string"
code string.y
1 11 OMEPRAZOL
2 22 PARACETAMOL
3 33 HIDROFEROL
4 44 ENALAPRIL
5 <NA> NOISE

请注意,您需要像这样定义word

  word <- as.data.frame(word)
colnames(word) <- "string"

关于r - 检测不同数据框中的字符串,从 R 中的列返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67199218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com