Vorrei combinare due tabelle in base al nome, al cognome e all'anno e creare una nuova variabile binaria che indica se la riga della tabella 1 era presente nella seconda tabella.Come unire/unire due tabelle usando i valori dei caratteri?
prima tabella è un insieme di dati panel set di alcuni attributi di giocatori NBA nel corso di una stagione:
firstname<-c("Michael","Michael","Michael","Magic","Magic","Magic","Larry","Larry")
lastname<-c("Jordan","Jordan","Jordan","Johnson","Johnson","Johnson","Bird","Bird")
year<-c("1991","1992","1993","1991","1992","1993","1992","1992")
season<-data.frame(firstname,lastname,year)
firstname lastname year
1 Michael Jordan 1991
2 Michael Jordan 1992
3 Michael Jordan 1993
4 Magic Johnson 1991
5 Magic Johnson 1992
6 Magic Johnson 1993
7 Larry Bird 1992
8 Larry Bird 1992
Il secondo data.frame è un insieme di dati panel di alcuni attributi di giocatori NBA selezionato per l'All-Star gioco:
firstname<-c("Michael","Michael","Michael","Magic","Magic","Magic")
lastname<-c("Jordan","Jordan","Jordan","Johnson","Johnson","Johnson")
year<-c("1991","1992","1993","1991","1992","1993")
ALLSTARS<-data.frame(firstname,lastname,year)
firstname lastname year
1 Michael Jordan 1991
2 Michael Jordan 1992
3 Michael Jordan 1993
4 Magic Johnson 1991
5 Magic Johnson 1992
6 Magic Johnson 1993
mio risultato desiderato assomiglia:
firstname lastname year allstars
1 Michael Jordan 1991 1
2 Michael Jordan 1992 1
3 Michael Jordan 1993 1
4 Magic Johnson 1991 1
5 Magic Johnson 1992 1
6 Magic Johnson 1993 1
7 Larry Bird 1992 0
8 Larry Bird 1992 0
I ho provato ad usare un join di sinistra. Ma non so se questo ha un senso:
test<-join(season, ALLSTARS, by =c("lastname","firstname","year") , type = "left", match = "all")
Vorrei usare 'left_join' o' right_join' dal pacchetto dplyr come nella risposta di David. Ma per risolvere il tuo codice: sembra che tu stia usando 'join()' dal pacchetto plyr. Eravate quasi arrivati, basta che premete il comando con 'ALLSTARS $ allstars <- 1'. Quindi esegui il join e converti i valori di 'NA' in 0. –
possibile duplicato di [Come unire (unire) frame di dati (interno, esterno, sinistro, destro)?] (Http://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner-outer-left-right) –
@ Sam Firke. E 'stato semplicemente straordinario! :) Grazie. Ha funzionato perfettamente! –