Объединение нескольких фреймов данных с отсутствующими данными в R

#r

#r

Вопрос:

У меня есть следующие данные, которые являются частью моей выборки, учитывая, что мой набор данных немного велик:

 df1<-read.table (text=" id
Ali,hok
Bab,mko
Katie,Mon
NA
NA
NA
NA
john,Nulla
NA
NA


", header=TRUE)
 

Второй набор данных выглядит следующим образом:

 df2<-read.table (text=" id  Class
Katie,Mon   AS1
Ali,hok MNO1
john,Nulla  KAL1
Katie,Mon   Nook
Bab,mko BAR11

", header=TRUE)
 

Я хочу получить :

 id        Class
Ali,hok    MNO1
Bab,mko   BAR11
Katie,Mon   AS1
NA           NA
NA           NA
NA           NA
NA           NA
john,Nulla KAL1
NA           NA
NA           NA
 

Я использовал fuzzyjoin , но я не получил предполагаемый результат

 library(fuzzyjoin)
outt<-left_join(df2,df1,by=c("id"="id"))
 

Комментарии:

1. Вы пробовали полное объединение?

2. Ваш left_join не из fuzzyjoin . Вам может понадобиться regex_left_join или stringdist_left_join

3. Ошибка в dists[include] <- stringdist::stringdist(v1[включить], v2[включить], : NAS не разрешены в назначениях с подпиской

4. Строка с kazi,jo не имеет аналогичной строки в ‘df2’

5. Для Katie, mon record у вас разные записи, почему вы сопоставили AS1 с NOOK? Какова была логика там?

Ответ №1:

Попробуйте простой merge из базового R

 df3 <- merge(df1, df2, all.x=T)
df3
#>            id Class
#> 1     Ali,hok  MNO1
#> 2     Bab,mko BAR11
#> 3  john,Nulla  KAL1
#> 4   Katie,Mon   AS1
#> 5   Katie,Mon  Nook
#> 6     kazi,jo  <NA>
#> 7        <NA>  <NA>
#> 8        <NA>  <NA>
#> 9        <NA>  <NA>
#> 10       <NA>  <NA>
#> 11       <NA>  <NA>
 

Комментарии:

1. Это не отражает результат интереса