Сравните имена в двух фреймах данных - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть два фрейма данных, F и M со строками имен (Имя, Отчество и Фамилия).Я хотел бы выяснить, какие строки находятся в обоих фреймах данных.

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), похоже, не работает.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Это объединение всех столбцов.

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
0 голосов
/ 24 декабря 2018

Скажем, у вас есть эти кадры данных:

 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

В качестве альтернативы вы можете превратить рамку данных в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...