Ich habe zwei Datenrahmen, A und B. Der erste Datenrahmen enthält Jahre, Gruppennamen und Namen. Der zweite Datenrahmen zeichnet die vollständigen Gruppenlisten auf. Ich möchte eine Variable in einem Datenrahmen erstellen. Wenn ein Name in einem Datenrahmen in der B- Jahres-/Gruppenliste erscheint, sollte er mit "Y" oder "N" gekennzeichnet werden.Mit dplyr :: muate eine neue Spalte, die zwei Datenrahmen vergleicht
Ein Datenrahmen und B Datenrahmen sind:
A <- data.frame(year = c("2000", "2000", "2000", "2000", "2002", "2002", "2003", "2003", "2003"), group = c("Star", "Star", "Sun", "Sun", "Mars", "Earth", "Earth", "Star", "Star"), name = c("John", "Bill", "Summer", "Evans", "Ben", "Mary", "Kally", "John", "Carl"))
B <- data.frame(year = c("2000", "2000", "2000", "2000", "2000", "2002", "2002","2002", "2003", "2003", "2003", "2003", "2003"), group = c("Star", "Star", "Star", "Sun", "Sun", "Mars", "Mars","Earth", "Earth", "Star", "Star", "Star", "Star"), namelist = c("John", "Helen", "Gray", "Summer", "Evans", "Kevin", "Ben", "Ring", "Steve", "Billy", "Carl", "Michel", "John"))
Zum Beispiel im Jahr 2000, zeigt B Datenrahmen, dass Star John, Helen und Grau hat. Da der Star eines Datenrahmens im Jahr 2000 John und Carl hat, sind die ersten beiden Zeilen eines Datenrahmens die beiden Variablen "Y" und "N". Das Ergebnis sollte so aussehen:
year group name in_the_list
1 2000 Star John Y
2 2000 Star Bill N
3 2000 Sun Summer Y
4 2000 Sun Evans Y
5 2002 Mars Ben Y
6 2002 Earth Mary N
7 2003 Earth Kally N
8 2003 Star John Y
9 2003 Star Carl Y
Darf ich fragen, warum Sie dplyr :: mutate anstatt Basisfunktionen verwenden müssen? Übrigens gibt es einen Tippfehler (Evens statt Evans) in Ihrem data.frame B – chinsoon12
Wenn dplyr :: mutate nicht notwendig ist, dann können Sie folgendes tun: 'B $ in_der_liste <-" Y "' ___ 'neu <- merge (A, B, by.x = c ("Jahr", "Gruppe", "Name"), by.y = c ("Jahr", "Gruppe", "Namensliste"), all.x = TRUE) ' ___ ' neues $ in_the_list <- ifelse (is.na (neues $ in_the_list), "N", "Y") ' – winampman