R 将数据帧中字符串的一部分与另一数据帧中的字符串相匹配

R 将数据帧中字符串的一部分与另一数据帧中的字符串相匹配,r,R,我有两个独立的数据帧,看起来像这样: #data frame 1 set.seed(5) first<-c("Jane, Sarah","Bill, Conrad", "Jim, Dave", "Mark, Ben", "Mike, Frank") month<-c("Feb","Jan","Dec","Jun","Aug") df1<-data.frame(first,month) #data frame 2 first<-c("John", "Brendan", "

我有两个独立的数据帧,看起来像这样:

#data frame 1
set.seed(5)
first<-c("Jane, Sarah","Bill, Conrad", "Jim, Dave", "Mark, Ben", "Mike, Frank")
month<-c("Feb","Jan","Dec","Jun","Aug")
df1<-data.frame(first,month)

#data frame 2
first<-c("John", "Brendan", "Mark", "Dave", "Sarah", "Julie", "Frank", "Henry")
vals<-seq(8)*floor(runif(8,min=10, max=100))
df2<-data.frame(first,vals)
#数据帧1
种子(5)

首先,这对你有用吗?我们首先从
中提取所有单词,然后对结果进行
lappy
以获得匹配项

library(stringr)

df_res <- df1
df_res$vals <- lapply(str_extract_all(df1$first, "\\w+"), function(x) {res <- df2$vals[match(x, df2$first)]
                                                                       res[is.na(res)] <- 0
                                                                       max(res)
                                                             })

df_res
#         first month vals
#1  Jane, Sarah   Feb   95
#2 Bill, Conrad   Jan    0
#3    Jim, Dave   Dec  140
#4    Mark, Ben   Jun  276
#5  Mike, Frank   Aug  399
库(stringr)

df_res
df3
代码不工作。另外,迈克和弗兰克在
df2
中都有匹配项,确定了。把迈克改成了“布兰登”,只配一个。还将df3固定为第一个月的VAL。这对于我设置的模型示例非常有效。谢谢我将在这里的工作数据集上尝试这个,看看它是如何运行的。如果有问题,我会让你知道。。。
library(stringr)

df_res <- df1
df_res$vals <- lapply(str_extract_all(df1$first, "\\w+"), function(x) {res <- df2$vals[match(x, df2$first)]
                                                                       res[is.na(res)] <- 0
                                                                       max(res)
                                                             })

df_res
#         first month vals
#1  Jane, Sarah   Feb   95
#2 Bill, Conrad   Jan    0
#3    Jim, Dave   Dec  140
#4    Mark, Ben   Jun  276
#5  Mike, Frank   Aug  399