У меня есть несколько двух кадров данных, df1 и df2, которые принимают такой формат (воспроизводимый код для ввода данных в конце):
df1
#> name instrument
#> 1 John Lennon guitar
#> 2 Mick Jagger vocals
#> 3 Ringo Starr drums
#> 4 Keith Richards guitar
и
df2
#> name beatles
#> 1 John Lennon 1
#> 2 Ringo Starr 1
#> 3 George Harrison 1
#> 4 Paul McCartney 1
IЯ хотел бы добавить столбец к df1, который указывает, есть ли запись также в df2 (и равен 0, если нет), поэтому мой желаемый вывод:
output
#> name instrument beatles
#> 1 John Lennon guitar 1
#> 2 Mick Jagger vocals 0
#> 3 Ringo Starr drums 1
#> 4 Keith Richards guitar 0
Я пробовал full_join()
, ноэто натягивает строки в df2, которых нет в df1, а это не то, что я хочу.(то есть строки Джорджа Харрисона и Пола Маккартни не должны быть в выводе)
library(tidyverse)
df1 %>%
full_join(df2)
#> Joining, by = "name"
#> name instrument beatles
#> 1 John Lennon guitar 1
#> 2 Mick Jagger vocals NA
#> 3 Ringo Starr drums 1
#> 4 Keith Richards guitar NA
#> 5 George Harrison <NA> 1
#> 6 Paul McCartney <NA> 1
Воспроизводимый код ниже:
df1 <- data.frame(stringsAsFactors=FALSE,
name = c("John Lennon", "Mick Jagger", "Ringo Starr", "Keith Richards"),
instrument = c("guitar", "vocals", "drums", "guitar")
)
df2 <- data.frame(stringsAsFactors=FALSE,
name = c("John Lennon", "Ringo Starr", "George Harrison",
"Paul McCartney"),
beatles = c(1, 1, 1, 1)
)
library(tidyverse)
df1 %>%
full_join(df2)