2个数据框,2种不同风格的命名同一个人,如何让它们相似?

2 data frames, 2 different styles of naming the same person, how to make them similar?

我有两个数据集。在一个数据集中,名字、名字和姓氏写在不同的变量中。 例如:

 ID            firstname        second name          last name
 12            john             arnold               doe
 14            jerry            k                    wildlife

在第二个中,它们写在一个变量中:

 ID            name
 12            john arnold doe
 14            jerry k wildlife

现在我希望能够在数据集一(单独的姓名)中找到数据集二(全名)中的这些人。 我遇到的几个问题是:

所以问题是,有人可以建议一个命令来拆分 first/second/last 名称中的名称吗?其次有人知道如何使用简单的命令搜索这些名称,例如:

    df<-df.old[grepl("firstname", df.old$firstname, ignore.cases=T) & grepl("secondname", df.old$secondname,ignore.cases=T) & grepl("lastname", df.old$lastname, ignore.cases=T),]

有什么建议吗?

德克

试试这个:

*样本数据*

df2 <- data.frame(ID=c(12, 14), name=c("john arnold doe", "jerry k wildlife"))

按 space

拆分名称
df2 <- cbind(df2$ID, data.frame(do.call(rbind, strsplit(as.character(df2$name), " "))))
names(df2) <- c("ID", "firstname", "second name", "last name")
df2

按名字和姓氏或 ID 连接两个数据框。

您可以使用 tidyr 包中的 separate

separate(df2, name, into=c("firstname", "secondname", "last name"), " ") 
# ID firstname secondname last name
#1 12      john     arnold       doe
#2 14     jerry          k  wildlife

对于缺失的中间名,如果姓氏可以归类为中间名,

df2 <- data.frame(ID=c(12, 14), name=c("john arnold doe", "jerry wildlife"))
library(splitstackshape)
cSplit(df2, 2, sep = " ")# this reads "split 2nd column by white space"
#   ID name_1   name_2 name_3
#1: 12   john   arnold    doe
#2: 14  jerry wildlife     NA

name_1对应first namename_2对应middle name