我有两个数据帧,F
和M
,带有名称行(First,Middle和Surname)。我想找到两个数据框中的行。
F <- read.table(
text = "First Middle Surname
Alessio Antonin Smith
Alessio Antonio Smith
Alessio Carlo Smith
Alessio Claudio Smith
Alessio Diego Smith
Alessio Emiliano Smith", header = TRUE)
M <- read.table(
text = "First Middle Surname
Alessio Lorenzo Smith
Alessio Miguel Smith
Alessio Rafael Smith
Alessio Santino Smith
Alessio Vito Smith
Claudio Alessio Smith", header = TRUE)
compare(F,M)
似乎无效。
答案 0 :(得分:4)
这是所有列上的合并。
A <- data.frame(a = 1:10, b = 21:30, c = 31:40)
B <- data.frame(a = 9:15, b = 29:35, c = 39:45)
merge(A, B)# implicit by = names(A) since all columns are common (thanks Rich Scriven)
# a b c
# 1 10 30 40
# 2 9 29 39
答案 1 :(得分:1)
假设您有以下数据框:
F <- data.frame(First=c("A", "B", "C"),
Middle=c("A", "C", "C"),
Last=c("D", "E", "F"))
M <- data.frame(First=c("B", "B", "C"),
Middle=c("J", "J", "C"),
Last=c("F", "S", "F"))
然后使用dplyr::intersect
您可以获取每列的公共元素:
intersect(F, M)
# First Middle Last
# C C F
或者,您可以将datframe转换为1个向量,然后再次使用intersect
获取整个数据帧上的匹配项
要获得整行,可以使用以下代码:
F <- F %>% rowwise() %>% mutate(All=paste(First, Middle, Last))
M <- M %>% rowwise() %>% mutate(All=paste(First, Middle, Last))
intersect(F$All, M$All)