Вы можете использовать merge
с параметром all=TRUE
:
df2 <- data.frame(Column4 = c("Male","Female"),stringsAsFactors = FALSE)
merge(df,df2,all = T)
# Column1 Column2 Column3 Column4
# 1 Dog Hound Black Male
# 2 Doggo Lab Brown Male
# 3 Dog Hound Black Female
# 4 Doggo Lab Brown Female
Вы также можете использовать crossing
из библиотеки tidyr
, которая возвращает порядок ожидаемого результата:
tidyr::crossing(df,df2)
# Column1 Column2 Column3 Column4
# 1 Dog Hound Black Male
# 2 Dog Hound Black Female
# 3 Doggo Lab Brown Male
# 4 Doggo Lab Brown Female
данные
df <- read.table(text="Column1 Column2 Column3
Dog Hound Black
Doggo Lab Brown",h=T,strin=F)